Nerdify CLI
A CLI do Nerdify foi construída com Thor, a biblioteca oficial de CLIs no ecossistema Ruby. Ela permite automatizar e padronizar a criação de aplicações, modelos, controladores, templates e traduções, garantindo agilidade e consistência no desenvolvimento.
A CLI do Nerdify possui os seguintes comandos principais:
- 🆕
nerdify create– Cria uma nova aplicação - ⚙️
nerdify generate– Gera artefatos dentro da aplicação - 🌐
nerdify translate– Gera traduções automáticas
Todos os comandos podem ser visualizados com:
nerdify help
🚀 Criando uma aplicação
nerdify create nome_da_app
Este comando:
- 🏗️ Cria estrutura Rails API-only
- 📦 Instala dependências
- 🛠️ Configura o Mongoid
- 🧱 Cria estrutura base para templates, modelos, controladores, policies e traduções
- 🔗 Prepara aplicação para conectar com frontend
🔧 Configurando uma aplicação Rails para usar Nerdify
Se você já tem uma aplicação Rails existente e quer adicionar o Nerdify:
cd rails_app
bundle add nerdify --source path_do_repositorio_privado
Depois, rode:
bundle exec nerdify:config
Este comando:
- 📂 Gera estrutura de pastas e arquivos necessários
- 🧩 Cria arquivos iniciais de configuração
- 🧠 Adiciona os arquivos base para o frontend reconhecer a estrutura do Nerdify
🧱 Gerando modelos
nerdify generate model nome_do_modelo [opções]
Opções:
--layout page– Modelo com actions usando layout padrão de página--layout modal– Gera modelo com actions usando layout modal
Esse comando cria:
- 📄 Arquivo do modelo Ruby incluindo Nerdify::Model, com orm :mongoid e blocos definidos com comentários
- 🌐 Estrutura pronta para ser traduzida e usada com o frontend
🧭 Gerando controladores
nerdify generate controller nome_do_modelo [opções]
Opções:
--type tipo– Define o tipo do controlador que pode serapplication,sessionsoureports--template template_path– Define o template que será utilizado, por exemplonerdify/templates/template_name--authorize user_class– Inclui autenticação para esse controlador usando o modelo indicado
Esse comando cria:
- 📂 Controlador Rails com herança adequada (Application, Sessions ou Reports)
- 🔐 Define métodos
authenticateetemplatecom base nas opções passadas - 🔄 Toda a lógica padrão de actions, autenticação e page_json passa a funcionar automaticamente
🧰 Gerando templates
nerdify generate template nome [opções]
Opções:
--type report– Template voltado para relatórios--type session– Template usado para login--type application– Template principal da aplicação
Cria arquivos no diretório:
app/helpers/nerdify/templates
Com estrutura padrão para renderização no frontend.
🧪 Gerando testes com IA
O Nerdify inclui um comando inteligente para geração automática de testes com RSpec, utilizando inteligência artificial para interpretar cenários e produzir testes completos e bem estruturados.
Comando básico:
nerdify ia test NomeDoModelo --file create --specs "cenário 1; cenário 2; cenário 3"
NomeDoModelo→ Nome do modelo para o qual será gerado o teste.--file→ Nome do arquivo de teste (ex:create,update,show, etc.)--specs→ Lista de cenários separados por;
🔍 Exemplo prático:
nerdify ia test Customer --file create --specs "deve criar um cliente com campos obrigatórios preenchidos; não deve criar cliente sem nome; deve permitir criar cliente com email opcional"
Esse comando irá gerar o arquivo:
spec/models/customer/create_spec.rb
Com o seguinte conteúdo:
RSpec.describe Customer, type: :model do
describe 'Criação' do
context 'com campos obrigatórios preenchidos' do
it 'deve criar um cliente válido' do
account = Account.fake
customer = Customer.fake({ account_id: account.id, name: "João", email: "joao@email.com" })
expect(customer).to be_valid
expect(customer.name).to eq("João")
end
end
context 'sem nome' do
it 'não deve criar o cliente' do
account = Account.fake
customer = Customer.fake({ account_id: account.id, name: nil })
expect(customer).not_to be_valid
expect(customer.errors[:name]).to include("não pode ficar em branco")
end
end
context 'com email opcional' do
it 'deve permitir criar sem email' do
account = Account.fake
customer = Customer.fake({ account_id: account.id, email: nil })
expect(customer).to be_valid
end
end
end
end
📌 Observações:
- O
Model.fake(...)já utiliza os dados do modelo e associações necessárias. - O
Customer.fake_parentspode ser usado para gerar automaticamente as dependências também. - Os testes seguem convenções padrão e são organizados por cenários legíveis.
- Você pode usar múltiplas specs em qualquer ação (
create,update,show,index, etc.).
🌍 Gerando traduções
nerdify generate translation --languate pt-BR --model Customer --type application
Opções:
--model nome_do_modelo– Considera os campos, ações, listas e filtros definidos no modelo--language linguagem– Define a linguagem da tradução--type tipo– Define o tipo de controlador para adaptar o conteúdo
Esse comando gera arquivos .yml em:
config/locales/:controller_path/:action_name.:language.yml
Já com estrutura e chaves prontas para uso no frontend. A linguagem padrão é definida em:
config/application.rb
substituindo:
config.i18n.default_locale = :"pt-BR"
🛠️ A CLI do Nerdify é um facilitador poderoso para acelerar a geração de estrutura e garantir padronização.
Com poucos comandos, você consegue colocar de pé toda uma aplicação estruturada para escalar com qualidade. ✨