问题描述
我有两个 Rails 应用程序,我想通过应用程序 A 的 rake 任务运行应用程序 B 的 rake 任务。到目前为止,我已经以这种方式尝试过,但是出现了如下错误:
Don't kNow how to build task 'environment' (See the list of available tasks with `rake --tasks`)
App A 的 rake 任务是:
namespace :daily_all_rake do
desc 'daily Rake'
task :daily_rake do
Bundler.with_clean_env do
exec("exec >> lib/rake/out.dat && exec 2>> lib/rake/err.dat &&
cd #{App_B Path} &&
RAILS_ENV=production BUNDLE_GEMFILE=#{Gemfile of App B} bundle exec rake -f #{Path to Rake File in App B} delete_duplicate_search_object:every_month --trace")
end
end
end
App B 的 Rake 任务只是一个普通的 rake 任务。我很想知道是否可以这样做,如果可以,我该怎么做?
解决方法
您错过了:environment
尝试像这样在 task :daily_rake
之后添加它:
namespace :daily_all_rake do
desc 'daily Rake'
task :daily_rake => :environment do
Bundler.with_clean_env do
exec("exec >> lib/rake/out.dat && exec 2>> lib/rake/err.dat &&
cd #{App_B Path} &&
RAILS_ENV=production BUNDLE_GEMFILE=#{Gemfile of App B} bundle exec rake -f #{Path to Rake File in App B} delete_duplicate_search_object:every_month --trace")
end
end
end