将gem中的Rake任务包含到我的引擎中

时间:2012-12-26 17:37:05

标签: ruby-on-rails ruby gem rake rails-engines

我正在创建一个rails引擎,我已经编写了一些rake任务。我的rake任务调用第三方gem中的rake任务,我将其作为依赖项包含在我的gemspec中。

当我尝试运行我的rake任务时,它无法说明它无法从第三方gem中找到任务。这使得考虑Rake -T的感官显示了我的任务,而不是第三方的感觉。

如果我在我的应用程序gemfile中包含第三方gem,一切都很完美,但我不想这样做。

我猜我需要在我的引擎的rake_tasks do块中添加另一个include,但不知道要包含什么。我尝试过各种各样的路径,但似乎都没有。

2 个答案:

答案 0 :(得分:2)

# lib/my_gem.rb
module MyGem
  ROOT_PATH = File.expand_path "../../", __FILE__
  # :: before of the module name it is not to encapsulate the module "My Gem"
  module ::Rails
    class Application
      rake_tasks do
        Dir[File.join(ROOT_PATH, "/lib/tasks/", "**/*.rake")].each do |file|
          load file
        end
      end
    end
  end
end

答案 1 :(得分:1)

听起来你的第三方宝石可能没有设置铁路。来自gem的rake任务不会自动包含在Rails应用程序中。这里有两个很好的资源,可以帮助解释如何设置一个铁路平局,你可以从中建立一些代码来手动包含第三方gem的rake任务:

including rake tasks in gems

http://blog.nathanhumbert.com/2010/02/rails-3-loading-rake-tasks-from-gem.html

相关问题