【发布时间】:2014-07-15 20:16:06
【问题描述】:
我使用“runner”而不是 rake 任务在 rails 3 中执行了以下任务。
第 1 步: 每当安装 gem 并且 scheduler.rb 有以下内容时,我都有:
set :environment, 'development'
set :output, {
:error => "/log/error.log",
:standard => "/log/cron.log"
}
every 1.minute do
runner "Cron.sendAutomaticsSMS()"
end
第 2 步:
Cron 文件:lib/cron.rb
class Cron < ActiveRecord::Base
def **sendAutomaticsSMS**()
----some code here ---
end
end
第 3 步:
whenever --update-crontab --set environment=development
这会更新 crontab 文件。
第 4 步:
使用以下命令检查 crontab 文件的内容:
crontab -e
它打开 cron 选项卡文件,其中包含要调用的 cron 作业方法的详细信息:
# Begin Whenever generated tasks for: store
# End Whenever generated tasks for: store
# Begin Whenever generated tasks for: /code/rails_projects/new/bhk/bigbhk- dev/config/schedule.rb
* * * * * /bin/bash -l -c 'cd <*RAILS_APP_PROJECT_LOCATION*> && script/rails runner -e development '\''**Cron.sendAutomaticsSMS()**'\'' >$
# End Whenever generated tasks for: /code/rails_projects/new/bhk/bigbhk-dev/config/schedule.rb
第 5 步:
运行 cron 作业:
$sudo service cron restart
cron stop/waiting
cron start/running, process 4027
这没有任何作用。我等待 sendAutomaticsSMS() 方法中定义的操作执行,但 cron 甚至没有进入此方法。
我在 log/development.log 中没有看到任何错误,并且我的 rails 应用程序中没有 log/cron.log。
【问题讨论】:
-
正在寻找有关此问题的回复。我相信很多人会在 RoR 中实现 cron。请帮忙。
-
您是否检查了运行 crontab 的用户的本地邮件投递?
-
如果您指的是 maildrop 实用程序,我还没有测试该用户使用 maildrop 的本地邮件传递。我在发送邮件的 Rails 中使用 ActiveMailer 支持。也适用于开发。
-
我不是指实用程序,而是默认情况下,cron 会将合并的标准输出和标准输入的 cronjobs 的电子邮件发送到该用户的本地邮件投递文件,通常是
/var/spool/<username>或/var/mail/<username>。
标签: ruby-on-rails ruby-on-rails-3 cron crontab whenever