Mat*_*des 4 cron rake ruby-on-rails scheduled-tasks delayed-job
我通过执行以下操作设法获得了一个执行rake任务的cron作业:
cd /home/myusername/approotlocation/ && /usr/bin/rake sendnewsletter RAILS_ENV=development
Run Code Online (Sandbox Code Playgroud)
我检查过which ruby并which rake确保路径正确(来自bash)
该工作看起来像是要运行,因为我在完成后从cron守护程序中收到以下电子邮件
Missing these required gems:
chronic
whenever
searchlogic
adzap-ar_mailer
twitter
gdata
bitly
ruby-recaptcha
You're running:
ruby 1.8.7.22 at /usr/bin/ruby
rubygems 1.3.5 at /home/myusername/gems, /usr/lib/ruby/gems/1.8
Run `rake gems:install` to install the missing gems.
(in /home/myusername/approotlocation)
Run Code Online (Sandbox Code Playgroud)
我在lib/tasks中的自定义rake文件如下:
task :sendnewsletter => :environment do
require 'rubygems'
require 'chronic'
require 'whenever'
require 'searchlogic'
require 'adzap-ar_mailer'
require 'twitter'
require 'gdata'
require 'bitly'
require 'ruby-recaptcha'
@recipients = Subscription.all(:conditions => {:active => true})
for user in @recipients
Email.send_later(:deliver_send_newsletter,user)
end
end
Run Code Online (Sandbox Code Playgroud)
有或没有要求项目,它仍然给我同样的错误...
任何人都可以对此有所了解吗?或者建议我如何在脚本目录中创建一个自定义文件来运行这个功能(我已经有一个cron作业,它将运行并处理我所有的delayed_jobs.
在乔纳森的建议下面,我跑了
ENV
作为一个cron工作,并收到以下输出:
SHELL=/bin/sh
MAILTO=myemailaddress
USER=myusername
PATH=/usr/bin:/bin
PWD=/home/myusername
SHLVL=1
HOME=/home/myusername
LOGNAME= myusername
_=/usr/bin/env
Run Code Online (Sandbox Code Playgroud)
这是否意味着它没有正确加载ruby文件?....还提出了Jonathans的建议,并制作了以下cron.sh文件
#!/bin/sh
date
echo "Executing Matenia Rake Task"
PATH=/usr/bin:/bin
cd /home/myusername/approotlocation/
rake sendnewsletter
Run Code Online (Sandbox Code Playgroud)
还有失踪的宝石通知......干杯!
解决这个问题的最简单方法(但是一种霰弹枪的方法)来自你的shell类型
环境| grep PATH
然后获取此输出并将该crontab添加到该用户
所以它看起来像这样
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
42 6 * * * root job1
47 6 * * 7 root job2
52 6 1 * * root job3
Run Code Online (Sandbox Code Playgroud)
只要确保你的宝石在那条路径内
| 归档时间: |
|
| 查看次数: |
2366 次 |
| 最近记录: |