I am learning Rails and came across the following problem. 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! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Bryan Duxbury
2007-Jun-02 14:47 UTC
Re: How to do Daily Database Maintenance in a Rails Way?
When I''ve had to do this sort of thing in the past, I''ve always created a controller that had actions that did the maintenance. Then, in order to make it happen in the background, I would create a cron job that used wget to request that controller/action. This gives you a lot of flexibility. 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/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Yuri Leikind
2007-Jun-02 23:25 UTC
Re: How to do Daily Database Maintenance in a Rails Way?
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 Cheers, Yuri On 6/2/07, newbie <tao.wang.usa-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > I am learning Rails and came across the following problem. > > 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! > > > > >-- Best regards, Yuri Leikind --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Yuri Leikind
2007-Jun-02 23:27 UTC
Re: How to do Daily Database Maintenance in a Rails Way?
Sorry, but isn''t it ugly, using wget to trigger some logic when you have script/runner and rake tasks? It''s like driving from NY to Washington via LA. Cheers, Yuri On 6/2/07, Bryan Duxbury <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > When I''ve had to do this sort of thing in the past, I''ve always created > a controller that had actions that did the maintenance. Then, in order > to make it happen in the background, I would create a cron job that used > wget to request that controller/action. This gives you a lot of > flexibility. > > 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/. > > > >-- Best regards, Yuri Leikind --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
David Altenburg
2007-Jun-03 07:02 UTC
Re: How to do Daily Database Maintenance in a Rails Way?
On Jun 2, 2007, at 6:25 PM, Yuri Leikind wrote:> > 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_taskI 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 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---