Blog

Search This Blog

Loading...

Thursday, May 13, 2010

Pushed 0.3.0 Gem: Much More User Friendly

After using SimpleWorkr for a long time now, I always think to myself, "there's gotta be some way to make this more intuitive". I want it to feel more like it's just like running your normal code without even really realizing that the work is actually offloaded to the cloud. So with that in mind, the gem now has a much more intuitive usage pattern, more like ActiveRecord.

The old way:


# Create a Service object
@service = SimpleWorker::Service.new(@access_key, @secret_key)
# Upload code
@service.upload(worker_class_name, path_to_file)
# Queue up jobs
@service.queue(worker_class_name, data_for_job)
# Or schedule jobs
@service.schedule(worker_class_name, data_for_job, schedule)
# Get status of jobs
@service.status(task_id)


Now, here's the shiny new way of doing it:

Some one time initialization:


SimpleWorker.configure do |config|
      config.access_key = @access_key
      config.secret_key = @secret_key
end


Now throughout your app, you can do the following:


# Instantiate a new worker
worker = MyWorker.new
# Queue directly from the object
worker.queue
# Schedule directly from the object
worker.schedule(my_schedule)
# Check status directly from it as well
worker.status


All data defined in instance variables in your worker will be sent along and usable in your run method.

Also, your code will automatically be uploaded if it has been changed!