Переопределить генератор строительных лесов по умолчанию в рельсах 3 - PullRequest
14 голосов
/ 08 января 2011

Я создал генератор для контроллера в рельсах 3. Теперь я хочу использовать этот генератор в качестве генератора по умолчанию при использовании генератора строительных лесов.

Возможно ли это?

Ответы [ 5 ]

15 голосов
/ 29 апреля 2011

Правильная позиция для вашего настроенного файла контроллера: lib/templates/rails/scaffold_controller/controller.rb

12 голосов
/ 13 февраля 2013

Если вы просто хотите использовать свой собственный шаблон контроллера, вы можете просто поместить его в lib/templates/rails/scaffold_controller/controller.rb

Если вы хотите заменить, например, сам код scaffold_controller_generator, чтобы платформа контроллера генерировала дополнительные файлы классов. Вы можете создать lib/generators/rails/my_scaffold_controller/my_scaffold_controller_generator.rb с шаблонами в lib/generators/rails/my_scaffold_controller/templates.

Не забудьте указать рельсы на вашем новом scaffold_controller в config/application.rb:

config.generators do |g|
  g.scaffold_controller = "my_scaffold_controller"
end

Для my_scaffold_controller_generator.rb вы можете скопировать из гема railties в railties-3.x.x/lib/rails/generators/rails/scaffold_controller, если хотите изменить поведение по умолчанию, или наследовать его, если вы просто хотите добавить функциональность:

require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'

module Rails
  module Generators
    class MyScaffoldControllerGenerator < ScaffoldControllerGenerator
      source_root File.expand_path("../templates", __FILE__)

      def new_funtionality
      end

    end
  end
end
7 голосов
/ 08 января 2011

Вы можете переопределить шаблоны, которые Rails использует для своих генераторов. В этом случае просто поместите файл в lib/templates/scaffold_controller/controller.rb и измените его, как вы хотите. В следующий раз, когда вы запустите rails g scaffold [modelName], он подберет этот новый шаблон контроллера и будет его использовать.

Это описано в Официальном руководстве по созданию и настройке Rails Generator .

6 голосов
/ 09 октября 2014

Это, кажется, немного изменилось с Rails 4. Вы можете увидеть, какой шаблон будет искать генератор в строке вызова при генерации скаффолда, и имя вашей папки шаблона должно соответствовать этому:

rails generate scaffold blub 
...
invoke  responders_controller

Если вы используете rails g scaffold_controller blubs расположение шаблона должно быть:

lib/templates/rails/scaffold_controller/controller.rb

Если вы используете rails g scaffold blub местоположениешаблона должно быть:

lib/templates/rails/responders_controller/controller.rb
1 голос
/ 11 октября 2015

Если кому-то интересно, почему это не работает при установке Rails 4 по умолчанию, это потому, что jbuilder вставляет себя в путь к шаблону перед местом переопределения. Мне не нужен jbuilder, поэтому я удалил его, но я также сообщил о проблеме в Github. Надеюсь, это будет исправлено в ближайшее время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...