ruby-on-rails - 通过 cron 问题加载 ruby​​gems 的 rake 任务

标签 ruby-on-rails cron rake scheduled-tasks delayed-job

通过执行以下操作,我设法获得了一个 cron 作业来运行 rake 任务:

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

我已与 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)

我在 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 工作,它将运行并处理我所有的 delay_jobs.cron 作业。

在下面乔纳森的建议之后,我跑了

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​​ 文件?
....
还听取了乔纳森的建议并制作了以下 cron.sh文件
#!/bin/sh
date
echo "Executing Matenia Rake Task"
PATH=/usr/bin:/bin
cd /home/myusername/approotlocation/
rake sendnewsletter

仍然收到丢失 gem 的通知......
干杯!

最佳答案

解决这个问题的最简单方法(但有点像霰弹枪)来自你的炮弹类型

环境 |路径

然后获取此输出并将其添加到该用户的 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

只要确保您的 gem 在该路径内

关于ruby-on-rails - 通过 cron 问题加载 ruby​​gems 的 rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2585244/

相关文章:

cakephp - 未从 cron 中找到带有 OpenSSL 的 Libcurl

linux - pgrep defunct 进程重启服务

ruby-on-rails - Ruby/Rails - 错误的 URI

ruby-on-rails - Ruby on Rails 究竟是什么?

python - 如何在线运行python脚本?

ruby-on-rails - US-ASCII 中的无效字节序列(ArgumentError),没有任何帮助

ruby-on-rails - Bundler 无法在任何资源中找到 rake

sqlite - Bundle Exec Rake DB 迁移错误

ruby-on-rails - 如何加快我的 Ruby/Rake 任务,该任务计算 300K 日期字符串中日期的出现次数?

html - Ruby on Rails Helper 方法 - HTML 显示为纯文本