Threading in ruby/rails

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

Not really -- you just push the problem further down the request chain.
Your request handler can't complete and pick up a new request until the mail handling thread completes. In production, this will probably be unacceptable.

Search the Google Group for backgroundrb, starfish and a4r. This has been discussed here at least twice in the last week. :slight_smile:

Ciao, Sheldon.

Hi     Thanks for your reply..Meanwhile I was trying with BackGroundrb pluggin installed like script/plugin install svn://rubyforge.org//var/svn/backgroundrb

But getting error when trying to start that [sijo@sijo backgroundrb]$ ./start ./../../config/../lib/workers/billing_worker.rb:6: undefined method `set_worker_ name' for BillingWorker:Class (NoMethodError)         from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_o riginal_require'         from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `requi re'         from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:495:in `require'         from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:342:in `new_constants_in'         from /usr/lib/ruby/gems/1.8/gems/activesupport-1.4.4/lib/active_support/ dependencies.rb:495:in `require'         from ./start:72         from ./start:72:in `each'         from ./start:72

What might be the reason

Thanks in advance Sijo

Hi     I here again tried installing Backgroundrb like svn co http://svn.devjavu.com/backgroundrb/tags/release-0.2.1 /vendor/plugins/backgroundrb

   And succed.But now when i did ruby script/backgroundrb start     It gives the error /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- daemons (LoadError)         from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'         from /home/sijo/railsexamples/mailexamples/mailing/vendor/plugins/backgroundrb/server/lib/backgroundrb_server.rb:2         from script/backgroundrb:27:in `require'         from script/backgroundrb:27

Could you please tell me what the reason is?

Sijo

Not sure if this is it, but it seems to be saying there's a gem called daemons missing?

sudo gem install daemons

Any reasons for using such an ancient version of backgroundrb?

Checkout:

http://backgroundrb.rubyforge.org

Also, i am getting backgroundrb for a new release and instructions for running code from git is here:

http://gnufied.org/2008/05/21/bleeding-edge-version-of-backgroundrb-for-better-memory-usage/

Mant find git version much more stable than svn, so please try that other than anything else. Also, there is a mailing list for backgroundrb, which you can use for posting queries.