Scheduled tasks on rails

Hi,
I’m developing a rails app that needs to run scheduled tasks, does
someone
knows how can I do that?
I’ve tried backgroundrb, but without success…
Looks like backgroundrb is outdated with my version of rails (3.0.3),
Does
anybody confirms?
Thanks in advance,

Not sure about backgroundrb, but you could also check out delayed_jobs
(though it sounds like it won’t be updated for a while), Resque (if
your requirements are more high-end), or the top answer here:

But if it’s just a scheduled task, how about plain old cron? Or see
more discussion (and more gems) here:

Fun!

Douglas,

I have been using cron tasks that invoke curl that invokes the routes
that perform the periodic tasks for several years. This works on all
versions of Rails (of course you have to be running *nix). I gave up on
using Rails plugins, etc. because every time I did an update, the darned
things broke (and now they seem to have gone away entirely).

Donz

On Jan 12, 2:54pm, “Donald R. Ziesig” [email protected] wrote:

Douglas,

I have been using cron tasks that invoke curl that invokes the routes
that perform the periodic tasks for several years.

Do you wrap some security on those routes at the web-server level or
in the application? If you secure at the webserver, do you do it by ip
address or user/password

O.

Quoting O. [email protected]:

address or user/password

Look at local_request? method in ActionController.

HTH,
Jeffrey

Quoting O. [email protected]:

resources like this in my httpd.conf that defines the server and
network environment.

Whatever. Then the question is one for the Apache forums, not Rails.

Jeffrey

Whatever. Then the question is one for the Apache forums, not Rails.

Indeed. However, it is of interest to solicit views as to how other
people approach this problem. Cron with Curl looks a simple and
sensible way of automation. What’s Donz’s approach?

O.

Look at local_request? method in ActionController.

Jeffrey,

Certainly another option but I would prefer not to have “network
config” logic in my application if I can help it. If you want to
manage all of the housekeeping jobs from a remote curl or put in load
balancers you would need to change code. I prefer to protect
resources like this in my httpd.conf that defines the server and
network environment.

O.

On Jan 13, 2011, at 12:36 PM, Donald R. Ziesig wrote:

I restrict the ip to 0.0.0.0 (localhost) so no one outside the
server can use the route. If someone is able to hack into the
server itself, all bets are off. :frowning: . So far I haven’t had any
problems, and the site has been up for 3.5 years so far.

local_request? would work too.

I need to do something similar – keep all but cron requests from the
same server from tripping a particular method in my controller. Can
you elaborate on how local_request? could be used for that purpose? I
looked at the documentation, and it appears to be a test you can run
on an exception, but I’m not clear how to employ it – what would I
use to raise the exception in the first place?

Is it as simple as this?

def my_api_method
send_out_a_bunch_of_mail if local_request?
end

My gut tells me no, there’s an object missing here.

Walter

Quoting Walter Lee D. [email protected]:

send_out_a_bunch_of_mail if local_request?
end

My gut tells me no, there’s an object missing here.

The object is an ActiveController instance, i.e. an HTTP request
handler. The
method checks the IP address of the requester.

Jeffrey

On 1/12/2011 1:37 PM, Jeffrey L. Taylor wrote:

Look at local_request? method in ActionController.

HTH,
Jeffrey

I restrict the ip to 0.0.0.0 (localhost) so no one outside the server
can use the route. If someone is able to hack into the server itself,
all bets are off. :frowning: . So far I haven’t had any problems, and the site
has been up for 3.5 years so far.

local_request? would work too.

Donz

Thank you guys!
I’m using cron tasks like djangst sugested and it’s working well.
And yes, I agree with Donald: plugins have this update problem…
So I’ll try the Donald’s way as well.
Big hug,
Douglas Fonseca