Why does this rake task
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
only actually run the first set of migrations, no matter the gems/gem ordering/random calls to reenable I use?
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.
The
invokemethod only runs “as needed”, which basically means that once it’s run once, it wont run again unless reenabled.You can either call
.reenableafter each.invoketo reset it, or use the.executecommand to run the task.The caveat with
.executeis that it won’t run the dependencies for the task if you have them.Why is Rake not able to invoke multiple tasks consecutively?
How to run Rake tasks from within Rake tasks?