[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Threading in ruby

Sijo Kg

6/6/2008 7:14:00 AM

Hi
I have succesfully send mail from my rails application..I did it like
below.What I am doing is send a mail to an assignee.
def after_transfer
code--------
code------
send_mail_to_primary_assignee(assignee_id)
end

#This is the function responsible for sending mails
def send_mail_to_primary_assignee(contact_id)
contact_name=Contact.find(contact_id).name
official_email_ids =
ContactEmailAddress.find_all_by_contact_id(contact_id ,:conditions =>
"contact_email_address_type_id = '2'" )
official_email_ids.each do |official_email|
ServiceDeskMailer.deliver_to_send_mail_to_primary_assignee_on_transfer_reason(official_email,contact_name)
end
puts "```````````````````` "
end

Then my question is how can i put this to seperate thread in ruby..Why I
am asking this is only after all the mails are send i can continue in
the view..So if I put this to a thread is that problem solved .Since I
am new thread especially in ruby could you please tell me how i can
implement that?

Thanks in advance
Sijo
--
Posted via http://www.ruby-....

1 Answer

Robert Klemme

6/6/2008 9:08:00 AM

0

2008/6/6 Sijo Kg <sijo@maxxion.com>:
> Hi
> I have succesfully send mail from my rails application..I did it like
> below.What I am doing is send a mail to an assignee.
> def after_transfer
> code--------
> code------
> send_mail_to_primary_assignee(assignee_id)
> end
>
> #This is the function responsible for sending mails
> def send_mail_to_primary_assignee(contact_id)
> contact_name=Contact.find(contact_id).name
> official_email_ids =
> ContactEmailAddress.find_all_by_contact_id(contact_id ,:conditions =>
> "contact_email_address_type_id = '2'" )
> official_email_ids.each do |official_email|
> ServiceDeskMailer.deliver_to_send_mail_to_primary_assignee_on_transfer_reason(official_email,contact_name)
> end
> puts "```````````````````` "
> end
>
> Then my question is how can i put this to seperate thread in ruby..Why I
> am asking this is only after all the mails are send i can continue in
> the view..So if I put this to a thread is that problem solved .Since I
> am new thread especially in ruby could you please tell me how i can
> implement that?

I can see two reasonable options:

1. create a thread ad hoc and let it do the mail sending (i.e. call
your methods).

2. create a global thread connected to a Queue that does the mail
sending and stuff the email information into the queue if you want to
send an email.

Note, both approaches are unlikely to work in a CGI environment. But
since I do not have intimate knowledge of Rails I cannot really tell
whether this will bite you or not. In this case you might need option

3. Create a separate process that accepts emails via DRb and then
hands them off to your MTA. Do the threading internally like in 1 or
2.

Cheers

robert


--
use.inject do |as, often| as.you_can - without end