Синтаксис для пропуска создания тестов, ресурсов и помощников для `rails generate controller`?

85

Я прочитал справку и попробовал следующую команду, чтобы пропустить создание тестов, ресурсов и вспомогательных файлов.

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

Очевидно, рельсам не нравится --option-name falseсинтаксис. так это ошибка, потому что я использовал неправильный синтаксис? Если да, то каков правильный путь? благодаря

CuriousMind
источник

Ответы:

166

Попробуйте использовать, --no-а затем optionname:

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

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

PinnyM
источник
4
Вы также можете использовать skipвместо no, например,--skip-assets
Деннис
77

Чтобы выключить без добавления параметров:

# 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.
Джино
27

Короче:

rails g controller home index --no-assets --no-test-framework
Эрик Траутман
источник
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
Джин Лим
источник