如何在Rails中使用cron作业?

时间:2011-06-10 08:37:24

标签: ruby-on-rails cron

我的模特:

class Uzer < ActiveRecord::Base
  establish_connection :uzer
  set_table_name 'managers'

  def self.synchronize_emails
    get_emails_from_uzer    = Uzer.find(:all)   
    get_emails_from_flower  = Respondent.find(:all)

      get_emails_from_uzer.each do |e|
        Respondent.create(:email => e.email, :user_id => 6, :respondent_group_id => e.organisational_id)
      end
  end

end

一切都很完美,但是......

我想每小时执行def self.synchronize_emails以从其他数据库接收电子邮件并插入我的数据库。

我试着用这个 - &gt; https://github.com/javan/whenever

我安装了gem,创建了config / schedule.rb并写道:

every 2.minutes do
  runner "Mossad.synchronize_emails"
end 

(仅用于测试是否有效)

然而,没有任何反应。有什么想法/建议吗?我想要克朗!:(

谢谢!


更新

我在控制台写道:whenever --update-crontab store

# Begin Whenever generated tasks for: store
0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c 'cd /home/ee-vzaharov/Projects/AptanaRadRails/survey && script/runner -e production '\''Mossad.synchronize_emails'\'''

# End Whenever generated tasks for: store
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
~                                                                                                                            
Type  :quit<Enter>  to exit Vim

2 个答案:

答案 0 :(得分:2)

使用cron,您可以安排以下cd /path/to/web/app && /path/to/rake -s name_of_task随时运行。我没有使用上面提到的宝石,cron似乎没问题。

使用crontab -e编辑当前用户的crontab。如果需要,Wikipedia有一篇关于如何使用它的文章。

答案 1 :(得分:0)

在crontab中创建条目时,请与crontab -e核对。如果没有,请运行命令:

cd /path/to/file
whenever --update-crontab store

插件将更新crontab(再次使用crontab -e

进行检查