我正在使用ROR和mongodb。该应用程序部署在Heroku上。我想在亚马逊ec2上运行几个延迟的工作。为此,我遇到了这些命令
git pull on your repo.
chmod 600 xyz.pem
ssh -i xyz.pem ubuntu@ec2-234-33-37-14.compute-1.amazonaws.com
我和heroku一起工作但没有和ec2一起工作,如果有人可以给我指出任何好的资源或者在亚马逊ec2中开始设置dealyed_job来解释。
我知道的事情:
1)如何在代码中实现延迟作业。
我不知道并怀疑的事情:
1)如何在amazon ec2上设置新机器以获得导轨回收?
2)如何通过连接到heroku中的app mongo数据库来运行delayed_jobs。
答案 0 :(得分:1)
您可以通过多种方式自动配置新机器。一些流行的方法是Puppet / Chef / SaltStack。
对于非常简单的设置,您可能只想运行脚本。 AWS允许您在启动计算机时提供脚本(通过UserData)。 https://help.ubuntu.com/community/CloudInit
以下是您可能提供给AWS的UserData脚本示例:
#!/bin/sh
set -e -x
apt-get --yes --quiet update
apt-get --yes --quiet install git
git clone https://github.com/user/repo.git /destination/folder
可以在此处找到文档:https://github.com/collectiveidea/delayed_job
延迟工作
在任何对象上调用.delay.method(params),它将在后台处理。
# without delayed_job
@user.activate!(@device)
# with delayed_job
@user.delay.activate!(@device)
<强>蒙戈强>
如果您计划将delayed_job与Mongoid一起使用,请将delayed_job_mongoid添加到您的Gemfile中。
gem 'delayed_job_mongoid'
修改:进一步阅读http://thediscoblog.com/blog/2013/06/10/backgrounding-tasks-in-heroku-with-delayed-job/和https://github.com/collectiveidea/delayed_job_mongoid