Forum: Ruby on Rails Scheduled tasks on rails

Ca44d7fcbd767c2ae73b934eebfad922?d=identicon&s=25 Douglas Fonseca (Guest)
on 2011-01-12 00:21
(Received via mailing list)
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,
C2b69b81423cc41257b4afa40d860a09?d=identicon&s=25 djangst (Guest)
on 2011-01-12 01:15
(Received via mailing list)
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:

http://stackoverflow.com/questions/897605/ruby-on-...

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

http://stackoverflow.com/questions/3632129/is-rail...

Fun!
6bdaa71c393fb9501d5f90b27157da8c?d=identicon&s=25 Don Ziesig (donz)
on 2011-01-12 15:56
(Received via mailing list)
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
Db0e8f881b2ae287c56bcc84cf4f9217?d=identicon&s=25 Owain (Guest)
on 2011-01-12 17:21
(Received via mailing list)
On Jan 12, 2:54pm, "Donald R. Ziesig" <don...@ziesig.org> 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.
96146b7a23174e2e024c06a49f845bb8?d=identicon&s=25 Jeffrey L. Taylor (Guest)
on 2011-01-12 19:39
(Received via mailing list)
Quoting Owain <owain.mcguire@gmail.com>:
> address or user/password
>

Look at local_request? method in ActionController.

HTH,
  Jeffrey
Db0e8f881b2ae287c56bcc84cf4f9217?d=identicon&s=25 Owain (Guest)
on 2011-01-12 21:08
(Received via mailing list)
>
> 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.
96146b7a23174e2e024c06a49f845bb8?d=identicon&s=25 Jeffrey L. Taylor (Guest)
on 2011-01-13 01:51
(Received via mailing list)
Quoting Owain <owain.mcguire@gmail.com>:
> 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
Db0e8f881b2ae287c56bcc84cf4f9217?d=identicon&s=25 Owain (Guest)
on 2011-01-13 10:05
(Received via mailing list)
> 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.
6bdaa71c393fb9501d5f90b27157da8c?d=identicon&s=25 Don Ziesig (donz)
on 2011-01-13 19:46
(Received via mailing list)
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. :-( .  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
A47e0a6beeb9d048ff054fc1c3a97418?d=identicon&s=25 Walter Davis (walterdavis)
on 2011-01-13 20:19
(Received via mailing list)
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. :-( .  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
96146b7a23174e2e024c06a49f845bb8?d=identicon&s=25 Jeffrey L. Taylor (Guest)
on 2011-01-13 21:10
(Received via mailing list)
Quoting Walter Lee Davis <waltd@wdstudio.com>:
>
>   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
Ca44d7fcbd767c2ae73b934eebfad922?d=identicon&s=25 Douglas Fonseca (Guest)
on 2011-01-14 08:57
(Received via mailing list)
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
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.