加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 通过cron问题加载rubygems的rake任务

发布时间:2020-12-17 03:43:56 所属栏目:百科 来源:网络整理
导读:我通过执行以下操作设法获得了一个运行rake任务的cron作业: cd /home/myusername/approotlocation/ /usr/bin/rake sendnewsletter RAILS_ENV=development 我检查了哪个ruby和哪个耙子以确保路径正确(来自bash) 该工作看起来像是要运行,因为我在完成后从cron
我通过执行以下操作设法获得了一个运行rake任务的cron作业:

cd /home/myusername/approotlocation/ && /usr/bin/rake sendnewsletter RAILS_ENV=development

我检查了哪个ruby和哪个耙子以确保路径正确(来自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)

我在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

有或没有要求项目,它仍然给我同样的错误…

任何人都可以对此有所了解吗?或者建议我如何在脚本目录中创建一个自定义文件来运行这个功能(我已经有一个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

这是否意味着它没有正确加载ruby文件?
?….
还接受了Jonathans的建议,并制作了以下cron.sh文件

#!/bin/sh
date
echo "Executing Matenia Rake Task"
PATH=/usr/bin:/bin
cd /home/myusername/approotlocation/
rake sendnewsletter

还有失踪的宝石通知……
干杯!

解决方法

解决这个问题的最简单方法(但是一种霰弹枪的方法)来自你的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

只要确保你的宝石在那条路径内

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读