Sintassi per saltare la creazione di test, risorse e helper per `rails generate controller`?


85

Ho letto la guida e ho provato il seguente comando per saltare la generazione di test, risorse e file di supporto

$ 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]

Come puoi notare dall'output sopra, questo funziona controller, routese viewsviene generato solo e . Ma poiché le ultime due righe sono interessanti:

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

Ovviamente a rails non sembra piacere la --option-name falsesintassi. quindi questo questo errore perché ho usato la sintassi sbagliata? Se sì, qual è il modo corretto? Grazie

Risposte:


166

Prova a usare --no-seguito da optionname:

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

Se vuoi cambiare il comportamento predefinito ogni volta che esegui il comando del generatore, puoi configurare i valori predefiniti che desideri nel file application.rb - vedi Come posso assicurarmi che Rails non generi test delle specifiche per le viste e gli helper? .


4
Puoi anche usare al skipposto di no, ad esempio--skip-assets
Dennis

77

Per disattivare senza dover aggiungere opzioni:

# application.rb
config.generators.assets = false
config.generators.helper = false

48

Le domande che servono solo API non richiederanno javascript, stylesheet, views, helpers. Per saltare quei file nel generatore / scaffold per Rails 3.xaggiungere il blocco di codice seguente nel fileapplication.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

controllare il collegamento per maggiori dettagli sui generatori


1
Quanto sopra funziona se usi falseinvece di nil.
bigtex777

1
Funziona ma riceverai un avviso di deprecazione a partire da Rails 6 quando usi false, quindi è meglio usare nil.
Gino

27

Più concisamente:

rails g controller home index --no-assets --no-test-framework

1

All'interno del file application.rb write: questo smetterà di generare tutto tranne ciò che è scritto nella riga di 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

Esempio:

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

per una soluzione di rivestimento =>

rails g controller assets_garments --skip-test-framework --skip-assets --skip-helper

0

Se vuoi generare solo controller, nient'altro.

rails g controller [controller_name] [index] --no-helper --no-assets --no-template-engine --no-test-framework
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.