Chris wrote:
> * how to send emails without making the user wait
Either Thread.new{}, or a plugin called Spawn. You need the latter if your
e-mails call templates which in turn call ActiveRecord. A separate thread
requires a separate database connection, and Spawn handles this.
> * how to execute long running tasks
The threading option has one flaw: If your web server expunges your Passenger
module from memory, the thread lapses.
When sending a few emails, if you can't send them before process harvesting
time, you have bigger problems than a missing email. Failing that analysis, you
need an out-of-process solution like BackgroundRB. It runs in a daemon of its
own and communicates with your app thru dRB. In exchange for a fatter and more
fragile implementation, you get a process you can control directly. However...
> * The best way to do periodic cron jobs in Rails
Create a folder called cron, write (using TDD!) a script that does what you
need, and install it into your OS's cron system as the command line
script/runner lib/my_script.rb.
If I needed to send e-mails, I would pool them up, then push them out with a
cron. The previous two options allow communication back to the user in
subsequent controller actions. You probably don't need that, so just configure
a
cron to run every 90 seconds, and send emails for up to 1 minute. Take a little
care to not send the same email twice, and you are set.
--
Phlip
http://flea.sourceforge.net/resume.html
--~--~---------~--~----~------------~-------~--~----~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---