我正在编写一系列Rails生成器,它们将共享几个相同的方法。我想将这些方法抽象为自己的模块或类,以便在我的每个生成器中重用(但不会自动触发)。
我最近的尝试是自动加载一个帮助文件,然后包含它:
LIB / my_gem / engine.rb
module MyGem
class Engine < Rails::Engine
config.autoload_paths += Dir["#{config.root}/lib/helpers/**"]
end
end
LIB /助手/ generators_helper.rb
module MyGem
module GeneratorsHelper
def some_method
# ...
end
end
end
LIB /发电机/ my_gem / my_generator.rb
# ...
include MyGem::GeneratorsHelper
# ...
但我会看到类似Error: uninitialized constant MyGem::GeneratorsHelper.
答案 0 :(得分:0)
我能够通过手动要求文件然后包含模块来完成此操作。这有点难看,但让我不能复制辅助方法:
<强> LIB / my_gem /发电机/ my_generator.rb 强>
require "#{Gem::Specification.find_by_name("my_gem").gem_dir}/lib/helpers/generators_helper.rb"
include MyGem::GeneratorsHelper