4

我正在创建一个 Rails 引擎,我已经在其中编写了一些 rake 任务。我的 rake 任务在 3rd-party gem 中调用 rake 任务,我已将其作为依赖项包含在我的 gemspec 中。

当我尝试运行我的 rake 任务时,它无法说明它无法从 3rd 方 gem 中找到任务。考虑到Rake -T我的任务是有道理的,但不是第 3 方的。

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

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

4

2 回答 2

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
于 2015-11-16T10:44:40.880 回答
1

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

包括宝石中的耙任务

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

于 2013-10-02T18:19:13.460 回答