Syntax to skip creating tests, assets & helpers for `rails generate controller`?

85

I read the help & tried the following command to skip generation of tests, assets & helper files

$ bin/rails generate controller home index  --helper false --assets false --controller-specs false --view-specs false   
create- app/controllers/home_controller.rb
        route  get "home/index"
        invoke  erb
        create    app/views/home
        create    app/views/home/index.html.erb
        invoke  rspec
        error  false [not found]
        error  false [not found]

As you may notice by output above this works & only controller, routes & views are generated. But as last two lines are interesting:

error  false [not found]
error  false [not found]

Obviously rails doesn't seem to like --option-name false syntax. so this this error because I used the wrong syntax? If yes, then what is the correct way? Thanks

CuriousMind
fonte

Respostas:

166

Try using --no- followed by optionname:

rails generate controller home index  --no-helper --no-assets --no-controller-specs --no-view-specs

If you want to change the default behavior every time you run the generator command, you can configure the defaults you would like in the application.rb file - see How can I make sure Rails doesn't generate spec tests for views and helpers?.

PinnyM
fonte
4
Você também pode usar em skipvez de no, por exemplo,--skip-assets
Dennis
77

Para desligar sem ter que adicionar opções:

# application.rb
config.generators.assets = false
config.generators.helper = false
Kris
fonte
48

Aplicações que servem única API não vai exigir javascript, stylesheet, views, helpers. Para pular esses arquivos no gerador / andaime para Rails 3.xadicionar o bloco de código abaixo noapplication.rb

#to skip assets, scaffolds.css, test framework, helpers, view
config.generators do |g|
  g.template_engine nil #to skip views
  g.test_framework  nil #to skip test framework
  g.assets  false
  g.helper false
  g.stylesheets false
end

verifique o link para mais detalhes sobre geradores

Arivarasan L
fonte
1
O acima funciona se você usar em falsevez de nil.
bigtex777 de
1
Funciona, mas você receberá um aviso de depreciação a partir do Rails 6 ao usar false, então é melhor usar nil.
Gino,
27

Mais concisamente:

rails g controller home index --no-assets --no-test-framework
Erik Trautman
fonte
1

Dentro do arquivo application.rb write: Isso irá parar de gerar tudo além do que está escrito na linha de comando

config.generators do |g|
  g.test_framework nil
  g.template_engine nil
  g.asstes false
  g.helper false
  g.stylesheets false
  g.javascripts false
end

Exemplo:

vidur@vidur-desktop:~/Downloads/tukaweb$ rails g controller uploader/three_d_models 
Running via Spring preloader in process 3703
      create  app/controllers/uploader/three_d_models_controller.rb
      invoke  assets
      invoke    js
      invoke    scss

para uma solução de revestimento =>

rails g controller assets_garments --skip-test-framework --skip-assets --skip-helper
vidur punj
fonte
0

Se você deseja gerar apenas controlador, nada mais.

rails g controller [controller_name] [index] --no-helper --no-assets --no-template-engine --no-test-framework
Jin Lim
fonte