Składnia, aby pominąć tworzenie testów, zasobów i pomocników dla „szyn generujących kontroler”?

85

Przeczytałem pomoc i wypróbowałem następujące polecenie, aby pominąć generowanie testów, zasobów i plików pomocniczych

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

Jak możesz zauważyć na podstawie wyników powyżej, to działa i tylko controller, routesi viewssą generowane. Ale ostatnie dwie linijki są interesujące:

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

Oczywiście railsy nie lubią --option-name falseskładni. więc ten błąd bo użyłem złej składni? Jeśli tak, to jaki jest właściwy sposób? Dzięki

CuriousMind
źródło

Odpowiedzi:

166

Spróbuj użyć, --no-a następnie optionname:

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

Jeśli chcesz zmienić domyślne zachowanie za każdym razem, gdy uruchamiasz polecenie generatora, możesz skonfigurować domyślne ustawienia w pliku application.rb - zobacz Jak mogę się upewnić, że Railsy nie generują testów specyfikacji dla widoków i pomocników? .

PinnyM
źródło
4
Możesz też użyć skipzamiast no, np.--skip-assets
Dennis
76

Aby wyłączyć bez konieczności dodawania opcji:

# application.rb
config.generators.assets = false
config.generators.helper = false
Kris
źródło
48

Wnioski, które służą jedynie API nie będą wymagać javascript, stylesheet, views, helpers. Aby pominąć te pliki w generatorze / rusztowaniu w celu Rails 3.xdodania poniższego bloku kodu wapplication.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

sprawdź link, aby uzyskać więcej informacji o generatorach

Arivarasan L
źródło
1
Powyższe działa, jeśli używasz falsezamiast nil.
bigtex777
1
Działa, ale otrzymasz ostrzeżenie o wycofaniu z Rails 6, gdy używasz false, więc lepiej jest użyć nil.
Gino
26

Bardziej zwięźle:

rails g controller home index --no-assets --no-test-framework
Erik Trautman
źródło
1

Wewnątrz pliku application.rb zapis: Spowoduje to zatrzymanie generowania wszystkiego oprócz tego, co jest napisane w wierszu poleceń

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

Przykład:

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

dla jednego rozwiązania liniowego =>

rails g controller assets_garments --skip-test-framework --skip-assets --skip-helper
vidur punj
źródło
0

Jeśli chcesz wygenerować tylko kontroler, nic więcej.

rails g controller [controller_name] [index] --no-helper --no-assets --no-template-engine --no-test-framework
Jin Lim
źródło