"每当"宝石在Heroku上运行cron工作

Ada*_*amT 41 ruby cron ruby-on-rails heroku whenever

我创建了一个使用随时随地宝石的应用程序.宝石创造了cron工作.我让它在本地工作,但似乎无法让它在heroku雪松上工作.执行此操作的命令是什么?

运行:

heroku run whenever --update-crontab job1
Run Code Online (Sandbox Code Playgroud)

不起作用

Wil*_*ill 70

简答:使用调度程序附加组件:http://addons.heroku.com/scheduler

答案很长:当你做heroku运行时,我们

  1. 旋转一个dyno
  2. 把你的代码放在上面
  3. 执行你的命令,等待它完成
  4. 把dyno扔掉了

您对crontab所做的任何更改都会立即被删除.一切都是短暂的,你不能编辑heroku上的文件,只需推送新的代码.

  • [Scheduler docs](https://devcenter.heroku.com/articles/scheduler#known-issues-and-alternatives)声明其"尽力而为服务",这意味着无法保证您的任务能够运行.如果您需要更可靠的东西 - 比如我的付款处理 - 请尝试[时钟流程](https://devcenter.heroku.com/articles/clock-processes-ruby). (6认同)
  • 因此Heroku调度程序在Heroku上部署rails应用程序时,基本上不需要Genever Gem吗?特别是当你有简单的cron工作?我认为使用调度程序有效地呈现Whenever gem无用或者我错过了什么? (4认同)

Dee*_*ale 6

您需要添加Heroku Scheduler插件。

您可以直接从仪表板添加它,也可以使用以下命令添加它:

  1. 安装add-on

    heroku addons:create scheduler:standard
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在中创建耙任务 lib/tasks

    # lib/tasks/scheduler.rake
    task :send_reminders => :environment do
      User.send_reminders
    end
    
    Run Code Online (Sandbox Code Playgroud)
  3. 安排工作

    • 造访Heroku资讯主页
    • 打开你的应用
    • 从列表中选择调度程序add-ons
    • 单击添加作业,输入任务并选择频率。

      例如,添加rake send_reminders,选择"Daily""00:00"每天在午夜发送提醒。

Heroku添加cron任务