4

なぜこのレーキタスクを行うのですか

gems = %w(gem1 gem2 gem3)
namespace :gems do
  namespace :install do
    desc "Runs install:migrations for all gems"
    task :migrations do
      gems.each do |gem_name|
        print "\nInstalling migrations for the #{gem_name} gem...\n"
        Rake::Task["#{gem_name}:install:migrations"].invoke
      end
      print "\n\nGem migrations installed."
    end
  end
end

使用するgem/gem ordering /ランダム呼び出しを使用して再度有効にするかどうかに関係なく、実際には最初の移行セットのみを実行しますか?

Installing migrations for the gem1 gem...
Copied migration whatever from gem1
Copied migration whatever from gem1
Copied migration whatever from gem1
Copied migration whatever from gem1

Installing migrations for the gem2 gem...
(nothing)

Installing migrations for the gem3 gem...
(nothing)

Gem migrations installed.
4

1 に答える 1

5

このinvokeメソッドは「必要に応じて」のみ実行されます。つまり、基本的に、一度実行すると、再度有効にしない限り、再度実行されることはありません。

.reenableそれぞれの後に呼び出し.invokeてリセットするか、.executeコマンドを使用してタスクを実行できます。

注意点.executeは、依存関係がある場合、その依存関係は実行されないということです。

Rakeが複数のタスクを連続して呼び出すことができないのはなぜですか?

Rakeタスク内からRakeタスクを実行する方法は?

于 2012-10-12T21:42:14.380 に答える