Question

I wrote a cronjob but it won't start working even though I updated my schedule.rb. I used javan/whenever. I am using:

ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.3.0]

When I 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

This is my 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

Company Model:

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

Error log (updated 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'
Was it helpful?

Solution

It looks like there is an issue with your production.rb file, line 69. Any idea what that is?

Also, in order to start the cronjob written using whenever, you need to run

whenever --update-crontab uniquejobname

where uniquejobname is some identifier for the cronjob

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top