【问题标题】:Reuse methods in a Rails generator在 Rails 生成器中重用方法
【发布时间】:2014-08-05 18:28:52
【问题描述】:

我正在编写一系列 Rails 生成器,它们将共享几个相同的方法。我想将这些方法抽象为它们自己的模块或类,以便在我的每个生成器中重用(但不会自动触发)。

我最近的尝试是自动加载一个帮助文件,然后再包含它:

lib/my_gem/engine.rb

module MyGem
  class Engine < Rails::Engine
    config.autoload_paths += Dir["#{config.root}/lib/helpers/**"]
  end
end

lib/helpers/generators_helper.rb

module MyGem
  module GeneratorsHelper
    def some_method
      # ...
    end
  end
end

lib/generators/my_gem/my_generator.rb

# ...
include MyGem::GeneratorsHelper
# ...

但我会看到类似Error: uninitialized constant MyGem::GeneratorsHelper.

【问题讨论】:

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


    【解决方案1】:

    我能够通过手动请求文件然后包含模块来完成此操作。这有点难看,但让我无法复制辅助方法:

    lib/my_gem/generators/my_generator.rb

    require "#{Gem::Specification.find_by_name("my_gem").gem_dir}/lib/helpers/generators_helper.rb"
    include MyGem::GeneratorsHelper
    

    【讨论】:

      猜你喜欢
      • 2021-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 2011-08-18
      • 2012-11-30
      • 2011-06-10
      相关资源
      最近更新 更多