【问题标题】:How do I run CRON jobs for a Rails app on Amazon EC2?如何在 Amazon EC2 上为 Rails 应用程序运行 CRON 作业?
【发布时间】:2013-10-05 00:03:34
【问题描述】:

谁能告诉我如何为在 Amazon EC2 (Ubuntu) 上运行的 Rails 应用程序设置 CRON 作业?

试图找到一些教程或提示如何使它工作,但仍然没有任何成功。 谢谢

【问题讨论】:

  • “要求我们推荐或查找工具、库或最喜欢的非现场资源的问题对于 Stack Overflow 来说是无关紧要的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,describe the problem 和什么到目前为止已经解决了这个问题。”那么,您搜索了哪些内容以及您做了什么来解决它?

标签: ruby-on-rails ruby ubuntu amazon-ec2 cron


【解决方案1】:

尝试创建一个模型方法来为您的 crondjob 执行任务。您可以使用 rails runner 来执行脚本。

rails runner 'User.deliver_reminder_emails!'

无论何时 gem 甚至可以做更高级的事情:https://github.com/javan/whenever

【讨论】:

    【解决方案2】:

    您应该看看rake 任务。检查thisthisthis

    运行它们很简单

    rake foo:bar
    

    您可以在crontab 中安排相同的时间;如果您使用 rvmbundler 在本地管理 gem,您可能需要设置正确的 PATH 变量。

    【讨论】:

      【解决方案3】:

      这对我来说相当棘手,因为 ELB-EC2 实例试图以 root 身份运行 cron 作业,这似乎会导致一组不同的权限、捆绑包等。

      这有点 hacky,但这很有效:

       sudo su ec2-user bin/bash -lc "cd /var/app/current && /opt/rubies/ruby-2.1.8/bin/bundle exec/bundle exec rails runner -e your_env \"Model.do_something\""
      

      基本上,su 给通常运行 rails 的用户,并明确说明 bundle 的路径。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-14
        • 1970-01-01
        相关资源
        最近更新 更多