Ruby on Rails #05: Entendendo os Geradores
Publicado em 1 de julho de 2016
Em Programação, Ruby on Rails

Agora que você está familiarizado com as Gems, vamos ao próximo tópico: os Generators. Mas o que são eles? São comandos do Ruby on Rails que geram códigos e estruturas básicas, permitindo que nos preocupemos apenas com que realmente importa.
Isso não é uma exclusividade do RoR. Se você já trabalhou com CakePHP ou FuelPHP, entre outros frameworks em PHP, deve ter esbarrado em algo parecido.
Introdução
Abra o diretório do projeto no Terminal (exemplo, cd /caminho/do/diretorio/example
) e execute o comando rails generate —help
ou rails g —help
.
Usage: rails generate GENERATOR [args] [options] General options: -h, [--help] # Print generator's options and usage -p, [--pretend] # Run but do not make any changes -f, [--force] # Overwrite files that already exist -s, [--skip] # Skip files that already exist -q, [--quiet] # Suppress status output Please choose a generator below. Rails: assets controller generator helper integration_test jbuilder job mailer migration model resource scaffold scaffold_controller task Cocoon: cocoon:install Coffee: coffee:assets Js: js:assets Kaminari: kaminari:config kaminari:views TestUnit: test_unit:generator test_unit:job test_unit:plugin Uploader: uploader
Essa é a lista de Generators disponíveis em nosso projeto. Sim, eles variam conforme as Gems utilizadas.
Explicação
Cada Generator tem seu próprio Help. Aconselho você ler todos (exemplo, rails generate assets —help
) e testa-los, para entender o que é possível fazer com cada um deles. Detalha-los aqui seria apenas uma perda de tempo, pois eu basicamente traduziria a documentação já existente.
Exclusão
Como desfazer os testes? Ou desfazer algum comando incorreto? Execute o comando rails destroy —help
ou rails d —help
, este comando desfaz o que os Generators criaram. Vamos supor que você executou o comando rails generate model Teste name:string
, que criou o Model Teste
(e seus testes unitários) e a Migration:
invoke active_record create db/migrate/20160628202259_create_testes.rb create app/models/teste.rb invoke test_unit create test/models/teste_test.rb create test/fixtures/testes.yml
Execute rails destroy model Teste
, para desfazer o que o comando anterior criou:
invoke active_record remove db/migrate/20160628202259_create_testes.rb remove app/models/teste.rb invoke test_unit remove test/models/teste_test.rb remove test/fixtures/testes.yml
Observação
Tenha em mente que os Generators são apenas ferramentas auxiliares. Eles criam apenas o básico do básico, as regras ainda precisam ser escritas.