通过另一个 rails 应用程序运行 rails 应用程序的 rake 任务

问题描述

我有两个 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