A simple library for working with the Proby task monitoring application.
Proby can be installed using RubyGems
gem install proby
Inside your script, be sure to
require "rubygems" require "proby"
If you're using Bundler, add the following to your Gemfile
and then run
Before notifications can be sent, you must tell Proby your API key. This only needs to be done once, and should ideally be done inside your apps initialization code.
Proby.api_key = "b4fe1200c105012efde3482a1411a947"
In addition, you can optionally give Proby a logger to use.
Proby.logger = Rails.logger
The easiest way to have Proby monitor your task is by wrapping your code in a call to Proby's
Proby.monitor(task_api_id) do # Do something here end
You can also send the start and finish notifications manually via calls to
Proby.send_start_notification(task_api_id) # Do something here Proby.send_finish_notification(task_api_id)
task_api_id when calling any of the the notification methods is optional. If it is not provided,
Proby will use the value of the
PROBY_TASK_ID environment variable. If no task id is specified
in the method call, and no value is set in the
PROBY_TASK_ID environment variable, then no notification
will be sent.
The Resque Plugin
The Resque plugin will automatically send start and finish notifications to Proby when your job
starts and finishes. Simply
extend Proby::ResquePlugin in your Resque job. The task id
can either be pulled from the
PROBY_TASK_ID environment variable, or specified in the job itself
by setting the
@proby_id attribute to the task id.
class SomeJob extend Proby::ResquePlugin @proby_id = 'abc123' # Or simply let it use the value in the PROBY_TASK_ID environment variable self.perform do_stuff end end
The Proby::ProbyTask class can be used to create, read, update, delete, pause, and unpause your tasks on Proby.
my_tasks = Proby::ProbyTask.find(:all) a_specific_task = Proby::ProbyTask.find("the_proby_task_id") task = Proby::ProbyTask.create(:name => 'Task name', :crontab => '* * * * *') task.name = "New name" task.save task.pause task.unpause task.delete