Skip to content

Instantly share code, notes, and snippets.

@veesahni
Created September 9, 2011 17:49
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save veesahni/1206863 to your computer and use it in GitHub Desktop.
Save veesahni/1206863 to your computer and use it in GitHub Desktop.
Integrating Padrino w/ Mongoid & delayed_job on Heroku
# app/app.rb
get :index do
SimpleTask.new.doit
"check heroku logs for job output"
end
# config/boot.rb
# For delayed_job
module Rails
def self.root
PADRINO_ROOT
end
end
# other delayed_job configuration
Delayed::Worker.destroy_failed_jobs = false
# tasks/create.rake
desc "One time task to setup on heroku"
task :create do
sh "heroku create --stack cedar"
sh "heroku addons:add mongohq:free"
sh "git push heroku master"
sh "heroku run bundle exec padrino rake seed"
sh "heroku ps:scale web=1 job=1"
end
gem 'delayed_job'
gem 'delayed_job_mongoid'
gem 'thin'
gem 'heroku'
# tasks/jobs.rake
task :environment do
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'boot.rb'))
end
namespace :jobs do
desc "Clear the delayed_job queue."
task :clear => :environment do
Delayed::Job.delete_all
end
desc 'delayed_job worker process'
task :work => :environment do
Delayed::Worker.new(:min_priority => ENV['MIN_PRIORITY'], :max_priority => ENV['MAX_PRIORITY']).start
end
end
web: bundle exec thin start -p $PORT -e $RACK_ENV
job: bundle exec padrino rake jobs:work
# db/seeds.rb
# load env
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'boot.rb'))
# setup structure for delayed_job
Delayed::Backend::Mongoid::Job.create_indexes
# lib/simple_task.rb
class SimpleTask
def doit
puts "just did something simple!"
$stdout.flush
end
handle_asynchronously :doit
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment