Publicado em 1 de julho de 2016  
Em ,  


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.