Sha256: 5335742ee8e9fc1933b16138d4084577805121917797d520301be40ae71a2f9f

Contents?: true

Size: 1.15 KB

Versions: 2

Compression:

Stored size: 1.15 KB

Contents

require "rest-client"
require "json"
require "multi_json"

module WorkerArmy
  class Client
    def self.push_job(job_class, data = {}, callback_url = nil, queue_name = 'queue')
      raise "No data" unless data
      raise "No job class provided" unless job_class
      
      if ENV['worker_army_endpoint']
        puts "Using environment variables for config..."
        @config = { endpoint: ENV['worker_army_endpoint'] }
      else
        begin
          puts "Using config in your home directory"
          @config = YAML.load(File.read("#{ENV['HOME']}/.worker_army.yml"))
        rescue Errno::ENOENT
          raise "worker_army.yml expected in ~/.worker_army.yml"
        end
      end

      worker_army_base_url = @config['endpoint']
      callback_url = "#{worker_army_base_url}/generic_callback" unless callback_url
      response = RestClient.post "#{worker_army_base_url}/jobs",
        data.merge(
          job_class: job_class,
          callback_url: "#{worker_army_base_url}/callback?callback_url=#{callback_url}",
          queue_name: queue_name
        ).to_json,
        :content_type => :json, :accept => :json
      response.code == 200
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
worker-army-0.2.1 lib/worker_army/client.rb
worker-army-0.2.0 lib/worker_army/client.rb