Skip to content

Call a rake task asynchronically from rails. Simple solution for background processes. The code is borrowed from n for background processes. The code is borrowed from Ryan Bates. Watch the Sceencast here: http://railscasts.com/episodes/127-rake-in-background

License

larskuhnt/call_rake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CallRake
========

This plugin provides simple asynchronus execution of tasks via rake. From your action or model you can call
a rake task in the background with call_rake(task, options = {})

I borrowed the code from Ryan Bates. You can find his very good screencast on this issue here:
http://railscasts.com/episodes/127-rake-in-background

Caution:
Because every call to call_rake loads a complete rails environment this background-processing is not useful
for frequently called tasks, because the memory usage is relavtively high. Use Starling/Workling or BackgroundRB
instead.

Example
=======

# mailings_controller.rb
def deliver
  call_rake :send_mailing, :mailing_id => params[:id].to_i
  flash[:notice] = "Delivering mailing"
  redirect_to mailings_url
end

# lib/tasks/mailer.rake
desc "Send mailing"
task :send_mailing => :environment do
  mailing = Mailing.find(ENV["MAILING_ID"]) # use uppercase param-names
  mailing.deliver
end

# models/mailing.rb
def deliver
  sleep 10 # placeholder for sending email
  update_attribute(:delivered_at, Time.now)
end


Copyright (c) 2008 Lars Kuhnt, released under the MIT license

About

Call a rake task asynchronically from rails. Simple solution for background processes. The code is borrowed from n for background processes. The code is borrowed from Ryan Bates. Watch the Sceencast here: http://railscasts.com/episodes/127-rake-in-background

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages