10

在 Heroku 上运行 Rails Rake 任务的一个已知问题是它们不会将日志提交到 Papertrail,因为一次性 dynos 默认将其输出推送到控制台。这可以通过使用在“分离”模式下运行测功机来解决heroku run:detached rake your:task。不幸的是,Heroku Scheduler 似乎会像平常一样自动运行任务,而不是在分离模式下,因此这些日志会丢失。

如何让调度程序以“分离”模式运行任务,以便这些每周/每天/每小时的任务按预期由 Papertrail 捕获它们的日志?

4

1 回答 1

1

您可以使用 sidekiq,这个 gem 将帮助您按计划运行任何进程,并且在您的 sidekiq 内部,您可以运行 rake 任务!

https://github.com/mperham/sidekiq

例子:

class MySidekiqTask
  include Sidekiq::Worker

  def perform
    application_name = Rails.application.class.parent_name
    application = Object.const_get(application_name)
    application::Application.load_tasks
    Rake::Task['db:migrate'].invoke
  end
end

很好的说明如何在 Heroku 服务器中设置 Sidekiq

https://itnext.io/sidekiq-overview-and-how-to-deploy-it-to-heroku-b8811fea9347

于 2019-04-24T05:27:47.280 回答