README.markdown in simple_worker-0.3.10 vs README.markdown in simple_worker-0.3.11

- old
+ new

@@ -1,14 +1,74 @@ Using Simple Worker -1) Upload code +Getting Started +=============== - simple_worker.upload +Configure SimpleWorker +---------------------- -2) Queue up a job for code to run +You really just need your access keys. - simple_worker.queue + SimpleWorker.configure do |config| + config.access_key = ACCESS_KEY + config.secret_key = SECRET_KEY + end -3) +Write a Worker +-------------- +Here's an example worker that sends an email: + require 'simple_worker' + class EmailWorker < SimpleWorker::Base + + attr_accessor :to, :subject, :body + + # This is the method that will be run + def run + send_email(:to=>to, :subject=>subject, :body=>body) + end + + def send_email + # Put sending code here + end + end + +Queue up your Worker +-------------------- + +Let's say someone does something in your app and you want to send an email about it. + + worker = EmailWorker.new + worker.to = current_user.email + worker.subject = "Here is your mail!" + worker.body = "This is the body" + worker.queue + +Schedule your Worker +-------------------- + +There are two scenarios here, one is the scenario where you want something to happen due to a user +action in your application. This is almost the same as queuing your worker. + + worker = EmailWorker.new + worker.to = current_user.email + worker.subject = "Here is your mail!" + worker.body = "This is the body" + worker.schedule(:start_at=>1.hours.since) + +The alternative is when you want to user it like Cron. In this case you'll probably +want to write a script that will schedule, you don't want to schedule it everytime your +app starts or anything so best to keep it external. + +Create a file called 'schedule_email_worker.rb' and add this: + + require 'simple_worker' + + worker = EmailWorker.new + worker.to = current_user.email + worker.subject = "Here is your mail!" + worker.body = "This is the body" + worker.schedule(:start_at=>1.hours.since, :run_every=>3600) + +Now your worker will be scheduled to run every hour.