Синтаксис, щоб пропустити створення тестів, активів та помічників для `rails generators controller`?


84

Я прочитав довідку та спробував наступну команду, щоб пропустити генерацію тестів, ресурсів та допоміжних файлів

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

Як ви могли помітити за результатами вище, це працює і лише controller, routes& viewsгенерується. Але оскільки два останні рядки цікаві:

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

Очевидно, що rails, схоже, не любить --option-name falseсинтаксис. так це ця помилка, тому що я використав неправильний синтаксис? Якщо так, то який правильний шлях? Дякую

Відповіді:


165

Спробуйте використати, --no-а потім optionname:

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

Якщо ви хочете змінювати поведінку за замовчуванням кожного разу, коли запускаєте команду генератора, ви можете налаштувати параметри за замовчуванням у файлі application.rb - див. Як я можу переконатися, що Rails не генерує специфікаційні тести для подань та помічників? .


4
Ви також можете використовувати skipзамість no, наприклад,--skip-assets
Денніс

76

Щоб вимкнути без необхідності додавати параметри:

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

48

Додатки , які служать тільки API не потрібно javascript, stylesheet, views, helpers. Щоб пропустити ці файли в генераторі / помості, Rails 3.xдодайте наведений нижче блок коду вapplication.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

перевірте посилання, щоб дізнатись більше про генератори


1
Вищевказане працює, якщо ви використовуєте falseзамість nil.
bigtex777

1
Це працює, але ви отримаєте попередження про припинення користування Rails 6 при використанні false, тому краще використовувати nil.
Джино


1

Усередині файлу application.rb пише: Це припинить генерувати все, крім того, що написано в командному рядку

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

Приклад:

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

для одного вкладишного рішення =>

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

0

Якщо ви хочете створити лише контролер, нічого іншого.

rails g controller [controller_name] [index] --no-helper --no-assets --no-template-engine --no-test-framework
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.