【问题标题】:Run a rake task of rails application through another rails application通过另一个 rails 应用程序运行 rails 应用程序的 rake 任务
【发布时间】:2021-06-23 18:59:13
【问题描述】:

我有两个 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 任务。我很想知道是否有可能做到这一点,如果有可能我该怎么做?

【问题讨论】:

  • 我认为你调用 rake 任务的方式有误;尝试以正常方式(从应用 B 的终端)调用 rake 任务,它是否有效?
  • 如果我从 App B 终端以正常方式调用它,它就可以工作。

标签: ruby-on-rails rake-task


【解决方案1】:

你错过了: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

【讨论】:

  • 我试过你的答案,但我仍然有同样的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多