Pular para o conteúdo principal

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 ser application, sessions ou reports
  • --template template_path – Define o template que será utilizado, por exemplo nerdify/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 authenticate e template com 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_parents pode 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. ✨