Rails cron with whenever, setting the environment
Whenever doesn't detect your environment, it just defaults to using production. You can set the environment for all jobs using set:
set :environment, 'staging'
Or per job:
every 2.hours do
runner 'My.runner', :environment => 'staging'
end
Don't write the RAILS_ENV variable. It should set it automatically.
every 1.day, :at => '4am' do
command "cd #{RAILS_ROOT} && rake thinking_sphinx:stop"
command "cd #{RAILS_ROOT} && rake thinking_sphinx:index"
command "cd #{RAILS_ROOT} && rake thinking_sphinx:start"
end
It works in my app:
every 4.days do
runner "AnotherModel.prune_old_records"
end
$ whenever --set environment=production
0 0 1,5,9,13,17,21,25,29 * * /Users/weppos/Sites/git/app/script/runner -e production "AnotherModel.prune_old_records"
$ whenever --set environment=development
0 0 1,5,9,13,17,21,25,29 * * /Users/weppos/Sites/git/app/script/runner -e development "AnotherModel.prune_old_records"