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
# Queue up jobs
# Or schedule jobs
@service.schedule(worker_class_name, data_for_job, schedule)
# Get status of jobs
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
Now throughout your app, you can do the following:
# Instantiate a new worker
worker = MyWorker.new
# Queue directly from the object
# Schedule directly from the object
# Check status directly from it as well
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!