我在避免生成器中出现重复代码时遇到了麻烦。我曾尝试使用关注点,但没有成功。谁能帮我 ?
我的 3 个生成器具有相同的方法,称为:
# Initialize the generator accepting attributes as arguments
def initialize(*args, &block)
super
@attributes = []
model_attributes.each do |attribute|
@attributes << Rails::Generators::GeneratedAttribute.new(*attribute.split(":")) if attribute.include?(":")
end
end
所以我在lib/generators/concerns
一个名为initializer.rb
module Initializer
extend ActiveSupport::Concern
# Initialize the generator accepting attributes as arguments
def initialize(*args, &block)
super
@attributes = []
model_attributes.each do |attribute|
@attributes << Rails::Generators::GeneratedAttribute.new(*attribute.split(":")) if attribute.include?(":")
end
end
end
我以这种方式将它包含在我的生成器中:
class MyViewsGenerator < Rails::Generators::NamedBase
include Initializer
initialize()
但是当我调用一代时,它会因以下错误而失败:
Error: uninitialized constant MyViewsGenerator::Initializer.