Method in Model


#1

I have a simple method in a model, to send out e-mails via the
script/runner.

def Reminder.dropoff
@messages = Reminder.find(:all, :conditions => [ “time < now()”])
@messages.each do |mes|
Mailman::deliver_send_message(mes)
end
end

However, it’s not sending e-mails.

When this exact code was dropped in a controller, it worked great… is
there something different about methods in models that I would need to
apply here?

Thanks!
-stirman


#2

Or perhaps an alternate question…

Can you call methods in a Controller from a Model?

Thanks,
-stirman


#3

Jason S. wrote:

Or perhaps an alternate question…

Can you call methods in a Controller from a Model?

Thanks,
-stirman

The way I have accomplished this in the past is by making the method an
action on a controller, then activating it with “wget
http://localhost/controller/action”. You can just run that command from
a cron job and be good to go.

Hope this helps.


#4

Jason S. wrote:

Indeed, worked perfect.

Are there any performance hits using wget vs. script/runner? Any
obvious reason to use one over the other?

Thanks again!
-stirman

I can’t imagine there being a performance hit for accessing the action
via wget. Think about it: all it does is hit your existing web server
with a request. You don’t even have to return anything if you don’t want
to. I don’t know how script/runner does its magic, but it can’t be much
different.

Overall, I just feel more comfortable having the system respond to
events the same way in every case, instead of building a custom
interface for some scheduled task.


#5

Indeed, worked perfect.

Are there any performance hits using wget vs. script/runner? Any
obvious reason to use one over the other?

Thanks again!
-stirman

Bryan D. wrote:

The way I have accomplished this in the past is by making the method an
action on a controller, then activating it with “wget
http://localhost/controller/action”. You can just run that command from
a cron job and be good to go.

Hope this helps.


#6

#if bryan.duxbury /* Jun 12, 11:51 */

http://localhost/controller/action". You can just run that command from
a cron job and be good to go.

Hope this helps.
#endif /* removed_email_address@domain.invalid */

One thing i would add to that is, consider the security implications of
doing it this way. someone in $internet_land could invoke that method
at will. Unless of course, you protect access to it.


keys: http://codex.net/gpg.asc

The trouble with the world is that the stupid are cocksure
and the intelligent are full of doubt.
– Bertrand Russell