0
我寫了一個cronjob,但即使我更新了schedule.rb,它也不會開始工作。我用javan /每當。我使用:Ruby on rails:每當/ cronjob不能正常工作
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.3.0]
當我的crontab -l:
# Begin Whenever generated tasks for: company_list
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
* * * * * /bin/bash -l -c 'cd /Users/-/rails_projects/company_list && script/rails runner -e production '\''Company.update_all_likes'\'' >> /Users/-/rails_projects/company_list/log/cron.log 2>&1'
# End Whenever generated tasks for: company_list
這是我schedule.rb
set :output, "#{path}/log/cron.log"
env :PATH, '/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin'
every 1.minute do
runner "Company.update_all_likes"
end
公司型號:
def update_all_likes
$i = 0
while $i < Company.size do
uri = URI("http://graph.facebook.com/" + Company.find[$i].fbid)
data = Net::HTTP.get(uri)
update_attribute(:likes,JSON.parse(data)['likes'])
$i +=1
end
end
錯誤日誌(更新2):
/Users/=/.rvm/gems/ruby-1.9.2-p290/gems/railties-3.2.13/lib/rails/commands/runner.rb:53:in `eval': Could not find table 'companies' (ActiveRecord::StatementInvalid)
from /Users/=/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.13/lib/active_record/connection_adapters/sqlite_adapter.rb:346:in `columns'
from /Users/=/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.13/lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
from /Users/=/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.13/lib/active_record/model_schema.rb:228:in `yield'
from /Users/=/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.13/lib/active_record/model_schema.rb:228:in `default'
from /Users/=/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.13/lib/active_record/model_schema.rb:228:in `columns'
from /Users/=/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.13/lib/active_record/model_schema.rb:248:in `column_names'
from /Users/=/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.2.13/lib/active_record/relation/calculations.rb:221:in `aggregate_column'
書面的cronjob我已經宣佈。我應該每次使用「when --update-crontab uniquejobname」命令啓動cronjob? –
不,你只需要運行一次它爲你設置你的cronjob文件(注意,如果你更新schedule.rb,你必須重新運行它)。這聽起來像你的cron環境沒有運行與你的應用程序相同的環境。你的cron說這個工作是爲了生產環境,你試圖運行它嗎? – bmac151
我需要在本地進行測試,所以我猜我在開發中也需要它?我以後會用Heroku來製作。我不確定在哪裏可以檢查。 @ bmac151 –