4

いくつかの rake タスクを記述した Rails エンジンを作成しています。私の rake タスクは、gemspec に依存関係として含めたサードパーティの gem で rake タスクを呼び出します。

rake タスクを実行しようとすると、サードパーティの gem からタスクが見つからないというメッセージが表示されて失敗します。これは、私のタスクを示していることを考えると理にかなっていRake -Tますが、サードパーティのタスクは示していません。

アプリケーションの gemfile にサードパーティの 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 にレールタイが設定されていないようです。gem からの rake タスクは、Rails アプリケーション内に自動的には含まれません。Rail Tie を設定する方法を説明するのに役立つ 2 つの優れたリソースを次に示します。これらのリソースから、サード パーティの gem の rake タスクを手動で含めるためのコードをベースにすることができます。

gem にレーキ タスクを含める

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

于 2013-10-02T18:19:13.460 に答える