Class: Fanforce::Worker

Inherits:
Object
  • Object
show all
Defined in:
lib/fanforce/worker.rb,
lib/fanforce/worker/worker.rb,
lib/fanforce/worker/version.rb

Defined Under Namespace

Modules: Utils Classes: Error, ErrorList, Errors, Runner

Constant Summary collapse

LOADED_AT =
Time.now
VERSION =
'0.36.0'
@@iron =
{}
@@redis =
{}
@@log =
Logger.new($stdout)

Class Method Summary collapse

Class Method Details

.enqueue(queue_id, params, options = {}) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/fanforce/worker/worker.rb', line 38

def self.enqueue(queue_id, params, options={})
  raise 'Params being sent to the queue must be a Hash' if !params.is_a?(Hash)

  queue_id = Utils.iron_queue_id(queue_id)
  retries = (options[:retries].present?) ? options.delete(:retries) : 0
  iron_mq.queue(queue_id).post({params: params, retries: retries}.to_json, options)
end

.iron_mqObject



17
18
19
20
# File 'lib/fanforce/worker/worker.rb', line 17

def self.iron_mq
  require 'iron_mq'
  @@iron[:mq] ||= IronMQ::Client.new(:token => @@iron[:token], :project_id => @@iron[:project_id])
end

.iron_project_idObject



13
14
15
# File 'lib/fanforce/worker/worker.rb', line 13

def self.iron_project_id
  @@iron[:project_id] || ENV['IRON_PROJECT_ID']
end

.iron_tokenObject



9
10
11
# File 'lib/fanforce/worker/worker.rb', line 9

def self.iron_token
  @@iron[:token] || ENV['IRON_TOKEN']
end

.logObject



32
33
34
# File 'lib/fanforce/worker/worker.rb', line 32

def self.log
  @@log
end

.redis_url_errorlogObject



22
23
24
# File 'lib/fanforce/worker/worker.rb', line 22

def self.redis_url_errorlog
  @@redis[:url_errorlog] || ENV['REDIS_URL_ERRORLOG'] || (raise 'No REDIS_URL_ERRORLOG found in ENV')
end

.run(worker_data, min_execution_time = 300, &code_block) ⇒ Object



46
47
48
49
# File 'lib/fanforce/worker/worker.rb', line 46

def self.run(worker_data, min_execution_time=300, &code_block)
  require_relative 'runner'
  Runner.new(worker_data, min_execution_time, &code_block)
end

.set_config(obj) ⇒ Object



26
27
28
29
30
# File 'lib/fanforce/worker/worker.rb', line 26

def self.set_config(obj)
  @@iron[:token] = obj[:iron_token] if obj[:iron_token]
  @@iron[:project_id] = obj[:iron_project_id] if obj[:iron_project_id]
  @@redis[:url_errorlog] = obj[:redis_url_errorlog] if obj[:redis_url_errorlog]
end