Forum: Ruby on Rails Re-using crontrollers with non-http requests

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
B30ce50678f0e934eaa6697425c59dd7?d=identicon&s=25 Julien Genestoux (julien51)
on 2008-10-12 09:01
Hi!

I am creating a application that does a lot of background processing.
For this I am using a queue (starling in my case...) and several pollers
that will get a message from the queue and execute some code
corresponding do it.

The code that these pollers process looks a lot like some code in
methods included in some of my rails application controllers.  I wanted
to DRY this a little bit, so I tried to use the controllers method.

What I ended up doing is basically using an
ActionController::Integration::Session, exactly like in the console or
when doing tests.

I wanted to know if that was absolutely wrong or if it was ok. I guess
there are some consequences as well, but what are they?

Thanks a lot for your help!
Bee69cfed999cd13e3bff73d472a39ee?d=identicon&s=25 Hassan Schroeder (Guest)
on 2008-10-12 17:55
(Received via mailing list)
On Sun, Oct 12, 2008 at 12:01 AM, Julien Genestoux
<rails-mailing-list@andreas-s.net> wrote:

> The code that these pollers process looks a lot like some code in
> methods included in some of my rails application controllers.  I wanted
> to DRY this a little bit, so I tried to use the controllers method.

> I wanted to know if that was absolutely wrong or if it was ok. I guess
> there are some consequences as well, but what are they?

I'll let someone with more experience respond to that, but wouldn't
it make sense (and be ultimately cleaner) to refactor those methods
out of the controller(s) into application.rb?

FWIW,
--
Hassan Schroeder ------------------------ hassan.schroeder@gmail.com
B30ce50678f0e934eaa6697425c59dd7?d=identicon&s=25 Julien Genestoux (julien51)
on 2008-10-14 22:50
Hassan Schroeder wrote:
> On Sun, Oct 12, 2008 at 12:01 AM, Julien Genestoux
> <rails-mailing-list@andreas-s.net> wrote:
>
>> The code that these pollers process looks a lot like some code in
>> methods included in some of my rails application controllers.  I wanted
>> to DRY this a little bit, so I tried to use the controllers method.
>
>> I wanted to know if that was absolutely wrong or if it was ok. I guess
>> there are some consequences as well, but what are they?
>
> I'll let someone with more experience respond to that, but wouldn't
> it make sense (and be ultimately cleaner) to refactor those methods
> out of the controller(s) into application.rb?
>
> FWIW,
> --
> Hassan Schroeder ------------------------ hassan.schroeder@gmail.com

Thanks Hassan,

Hum, I am a little confused, but I don't think so... Actually, I am
about to write implementations for AbstractResponse and AbstractRequests
so that I can call the controller's methods with them!

Anyone else has tips/opinions about this?
6ef8cb7cd7cd58077f0b57e4fa49a969?d=identicon&s=25 Brian Hogan (Guest)
on 2008-10-14 23:31
(Received via mailing list)
Controllers are designed (in MVC patterns) to process requests and
deliver
responses. Rails-based controllers are designed for HTTP request/
response.
The answer is to make your own controller that answers your agents'
responses.

Take advantage of Ruby here - take common code OUT of the controllers
and
put it into modules. Include the modules into your controllers, then
make
your own listener class that also mixes those models in. Use a daemon to
keep that listener going.  Railscasts.com has a nice screencast on
daemons.

How does that sound?

On Tue, Oct 14, 2008 at 3:50 PM, Julien Genestoux <
B30ce50678f0e934eaa6697425c59dd7?d=identicon&s=25 Julien Genestoux (julien51)
on 2008-10-15 06:46
Thanks Brian for this!

That sounds good! A lot of work, but good, thanks for this!

julien

Brian Hogan wrote:
> Controllers are designed (in MVC patterns) to process requests and
> deliver
> responses. Rails-based controllers are designed for HTTP request/
> response.
> The answer is to make your own controller that answers your agents'
> responses.
>
> Take advantage of Ruby here - take common code OUT of the controllers
> and
> put it into modules. Include the modules into your controllers, then
> make
> your own listener class that also mixes those models in. Use a daemon to
> keep that listener going.  Railscasts.com has a nice screencast on
> daemons.
>
> How does that sound?
>
> On Tue, Oct 14, 2008 at 3:50 PM, Julien Genestoux <
This topic is locked and can not be replied to.