【问题标题】: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
【解决方案2】:
您应该看看rake 任务。检查this、this和this。
运行它们很简单
rake foo:bar
您可以在crontab 中安排相同的时间;如果您使用 rvm 和 bundler 在本地管理 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 的路径。