Не создавать папку вида на рельсах, генерирующих контроллер

Есть ли способ с обычной конфигурацией генераторов отключить создание папок вида и шаблонов действий при запуске rails generate controller?

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

Скорее всего, в какой-то момент мы собираемся создать наши собственные контроллеры/генераторы ресурсов для нашего API, но мне было любопытно, есть ли способ отключить эту досаду тем временем.

Ответ 1

Это не хорошо документированная функция, но попытайтесь добавить --skip-template-engine (псевдоним --no-template-engine) в команду.

rails generate controller foo bar --skip-template-engine

демо на фиктивном приложении:

rails g controller my_controller index show --no-template-engine
      create  app/controllers/my_controller_controller.rb
       route  get "my_controller/show"
       route  get "my_controller/index"
      invoke  test_unit
      create    test/functional/my_controller_controller_test.rb
      invoke  helper
      create    app/helpers/my_controller_helper.rb
      invoke    test_unit
      create      test/unit/helpers/my_controller_helper_test.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/my_controller.js.coffee
      invoke    scss
      create      app/assets/stylesheets/my_controller.css.scss

Ответ 2

Чтобы пропустить просмотры от вашего контроллера, отключите механизм шаблона.

Однажды:

rails g controller ControllerName action1 action2 --skip-template-engine

Обратите внимание, что каждый параметр --skip также имеет псевдониму --no.

По умолчанию:

# config/application.rb

config.generators do |g|
  g.template_engine false
end

# OR

config.generators.template_engine = false

Если у вас есть приложение только для API (без интерфейса), вы также можете пропустить активы и помощники от создания ваших контроллеров.

Однажды:

rails g controller api/users --no-helper --no-assets --no-template-engine

По умолчанию:

# config/application.rb

config.generators do |g|
  g.assets false
  g.helper false
  g.template_engine false
end

# OR

config.generators.assets = false
config.generators.helper = false    
config.generators.template_engine = false

Отключение активов пропускает таблицы стилей и javascripts. Если вы хотите просто пропустить один, используйте --no-stylesheets или --no-javascripts или в config/application.rb используйте:

config.generators.stylesheets = false
config.generators.javascripts = false

Если ваша конфигурация по умолчанию пропускает что-то из сгенерированного (например, активы и помощники), но вы нуждаетесь в них в одном случае, вы можете сгенерировать их так:

rails g controller foo --helper --assets --skip

где --skip пропускает файлы, которые уже существуют.

Ответ 3

Просто подумал, что я попытаюсь подчеркнуть флаг -skip-template-engine, чтобы увидеть, работает ли он в генераторе, и это сработало очарование! Нет шаблонов представлений, генерируемых командой bin/rails g controller в приложении Rails 4.2.

Пытаться:

config.generators do |g|
  g.template_engine false
end

Немного поздно я знаю, но эти вещи остаются в Google! ;)

Ответ 4

Если вы создаете API без интерфейса, вы можете продолжить использование rails new --api. Тем не менее, я не рекомендую этот вариант, если вы планируете создать интерфейс (например, одностраничное приложение), потому что он отключает много вещей, включая конвейер активов.