I need to do some daily maintenance to the MySQL database. By
maintenance, I mean reading data from one table, do some calculation,
and put the result in another table. This should happen everyday at a
specified time, e.g., at mid-night, no matter if there is any visitor
visiting the site or not. Ideally this should happen quietly in the
background without any human intervention.
How can I do it in Rails?
I understand that in some other environments like PHP I could do it in
at least two ways:
1. Write a stored procedure for the daily maintenance;
2. Write a standalone script for the daily maintenance and use cron to
schedule it to run once per day;
But these two are pretty un-Rails. So what should I do for tasks like
this in a Rails way?
Thanks!
The other option is to use script/runner and stick that in a cron job.
Whatever floats your boat, really.
--
Posted via http://www.ruby-forum.com/.
task :my_task => :environment
# Do whatever you need
end
calling it:
rake my_task
Cheers,
Yuri
--
Best regards,
Yuri Leikind
Cheers,
Yuri
>
> I guess the Rails way is creating a rake task that depends on rails
> environment (i.e. boots the Rails runtime), doing there everything you
> need using ActiveRecord and then calling this rake task from cron
>
> task :my_task => :environment
> # Do whatever you need
> end
>
> calling it:
>
> rake my_task
I think that's a fine solution. Cron is great as scheduling, and you
can still use your Rails environment definitions (and ActiveRecord,
if necessary).
You may be interested in BackgrounDrb (http://
backgroundrb.rubyforge.org/). It is designed for offloading long-
running tasks from your Rails server, and it includes scheduling
capabilities (similar to cron).
Thanks,
David L Altenburg
http://gensym.org