重用Rails生成器中的方法

时间:2014-08-05 18:28:52

标签: ruby-on-rails ruby-on-rails-4 rails-generate

我正在编写一系列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.

的内容

1 个答案:

答案 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