Я пытаюсь сделать простой генератор представлений и, используя принцип DRY, я не хочу иметь свои собственные шаблоны html (erb/haml/slim). Я хотел бы, чтобы мой генератор подключался к существующему механизму шаблонов и передал ему некоторые аргументы.
Мой файл view_generator.rb
выглядит так:
class ViewGenerator < Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
def some_custom_method
(...)
end
hook_for :template_engine, :as => :scaffold
end
Все работает нормально, как это. Что я хотел бы сделать в своем some_custom_method
, так это добавить пару атрибутов:
def some_custom_method
new_attribute = Rails::Generators::GeneratedAttribute.new("description")
new_attribute.type = :integer
attributes << new_attribute
end
Что происходит, так это то, что я вставляю new_attribute
в массив attributes
, но когда hook_for
выполняется, переменная attribute
возвращается к исходной, переданной из командной строки.
Как я могу обойти это?