Ответ 1
Правильная позиция для вашего настроенного файла контроллера lib/templates/rails/scaffold_controller/controller.rb
Я создал генератор для контроллера в рельсах 3. Теперь я хочу использовать этот генератор в качестве генератора по умолчанию при использовании генератора лесов.
Возможно ли это?
Правильная позиция для вашего настроенного файла контроллера lib/templates/rails/scaffold_controller/controller.rb
Если вы просто хотите использовать свой собственный шаблон контроллера, вы можете просто поместить его в 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
Вы можете переопределить шаблоны, которые Rails использует для своих генераторов. В этом случае просто поместите файл в lib/templates/scaffold_controller/controller.rb
и измените его, как хотите. При следующем запуске rails g scaffold [modelName]
он подберет этот новый шаблон контроллера и будет использовать его.
Это описано в в разделе 6 руководства по созданию и настройке Rails-генераторов.
Похоже, что это немного изменилось с Rails 4. Вы можете увидеть, какой шаблон будет искать генератор в строке вызова при создании эшафот, а ваше имя папки шаблона должно соответствовать этому:
rails generate scaffold blub
...
invoke responders_controller
Если вы используете рельсы g scaffold_controller blubs, расположение шаблона должно быть:
lib/templates/rails/scaffold_controller/controller.rb
Если вы используете рельсы g scaffold blub, расположение шаблона должно быть:
lib/templates/rails/responders_controller/controller.rb
Если кто-то задается вопросом, почему это не работает в установке Rails по умолчанию, это потому, что jbuilder вставляет себя в путь шаблона до места переопределения. Мне не нужен jbuilder, поэтому я удалил его, но я также сообщил о проблеме в Github. Надеюсь, скоро это будет исправлено.