在Heroku上运行Rails Rake任务的一个已知问题是,它们不会将日志提交到Papertrail,因为默认情况下,一次性dynos将其输出推送到控制台。 这可以通过使用heroku run:detached rake your:task
在"分离"模式下运行您的测功机来解决。 不幸的是,Heroku 调度程序似乎自动正常运行任务,而不是在分离模式下运行任务,因此这些日志会丢失。
如何使调度程序以"分离"模式运行任务,以便这些每周/每天/每小时的任务按预期捕获 Papertrail 的日志?
您可以使用 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