Module: Faktory
- Defined in:
- lib/faktory.rb,
lib/faktory/cli.rb,
lib/faktory/job.rb,
lib/faktory/util.rb,
lib/faktory/fetch.rb,
lib/faktory/rails.rb,
lib/faktory/client.rb,
lib/faktory/logging.rb,
lib/faktory/manager.rb,
lib/faktory/version.rb,
lib/faktory/launcher.rb,
lib/faktory/processor.rb,
lib/faktory/connection.rb,
lib/faktory/job_logger.rb,
lib/faktory/middleware/chain.rb,
lib/faktory/exception_handler.rb
Defined Under Namespace
Modules: ExceptionHandler, Job, Logging, Middleware, Util
Classes: CLI, Client, CommandError, Connection, Fetcher, JobLogger, Launcher, Manager, ParseError, Processor, Rails, Shutdown, UnitOfWork
Constant Summary
collapse
- NAME =
'Faktory'.freeze
- LICENSE =
'See LICENSE and the LGPL-3.0 for licensing details.'
- DEFAULTS =
{
queues: ['default'],
concurrency: 10,
require: '.',
environment: 'development',
timeout: 25,
error_handlers: [],
lifecycle_events: {
startup: [],
quiet: [],
shutdown: [],
},
reloader: proc { |&block| block.call },
}
- DEFAULT_JOB_OPTIONS =
{
'retry' => 25,
'queue' => 'default'
}
- VERSION =
"0.5.0"
Class Method Summary
collapse
Class Method Details
.client_middleware {|@client_chain| ... } ⇒ Object
89
90
91
92
93
|
# File 'lib/faktory.rb', line 89
def self.client_middleware
@client_chain ||= Middleware::Chain.new
yield @client_chain if block_given?
@client_chain
end
|
Configuration for Faktory client, use like:
Faktory.configure_client do |config|
config.faktory = { :size => 1, :url => 'myhost:7419' }
end
66
67
68
|
# File 'lib/faktory.rb', line 66
def self.configure_client
yield self unless worker?
end
|
Configuration for Faktory executor, use like:
Faktory.configure_worker do |config|
config.worker_middleware do |chain|
chain.add MyServerHook
end
end
56
57
58
|
# File 'lib/faktory.rb', line 56
def self.configure_worker
yield self if worker?
end
|
.default_job_options ⇒ Object
105
106
107
|
# File 'lib/faktory.rb', line 105
def self.default_job_options
defined?(@default_job_options) ? @default_job_options : DEFAULT_JOB_OPTIONS
end
|
.default_job_options=(hash) ⇒ Object
101
102
103
104
|
# File 'lib/faktory.rb', line 101
def self.default_job_options=(hash)
@default_job_options = default_job_options.merge(Hash[hash.map{|k, v| [k.to_s, v]}])
end
|
.dump_json(object) ⇒ Object
112
113
114
|
# File 'lib/faktory.rb', line 112
def self.dump_json(object)
JSON.generate(object)
end
|
.error_handlers ⇒ Object
Register a proc to handle any error which occurs within the Faktory process.
Faktory.configure_worker do |config|
config.error_handlers << proc {|ex,ctx_hash| MyErrorService.notify(ex, ctx_hash) }
end
The default error handler logs errors to Faktory.logger.
139
140
141
|
# File 'lib/faktory.rb', line 139
def self.error_handlers
self.options[:error_handlers]
end
|
.load_json(string) ⇒ Object
109
110
111
|
# File 'lib/faktory.rb', line 109
def self.load_json(string)
JSON.parse(string)
end
|
.logger=(log) ⇒ Object
119
120
121
|
# File 'lib/faktory.rb', line 119
def self.logger=(log)
Faktory::Logging.logger = log
end
|
.on(event, &block) ⇒ Object
Register a block to run at a point in the Faktory lifecycle. :startup, :quiet or :shutdown are valid events.
Faktory.configure_worker do |config|
config.on(:shutdown) do
puts "Goodbye cruel world!"
end
end
151
152
153
154
155
|
# File 'lib/faktory.rb', line 151
def self.on(event, &block)
raise ArgumentError, "Symbols only please: #{event}" unless event.is_a?(Symbol)
raise ArgumentError, "Invalid event name: #{event}" unless options[:lifecycle_events].key?(event)
options[:lifecycle_events][event] << block
end
|
.options ⇒ Object
41
42
43
|
# File 'lib/faktory.rb', line 41
def self.options
@options ||= DEFAULTS.dup
end
|
.options=(opts) ⇒ Object
44
45
46
|
# File 'lib/faktory.rb', line 44
def self.options=(opts)
@options = opts
end
|
.server ⇒ Object
74
75
76
77
78
79
|
# File 'lib/faktory.rb', line 74
def self.server
raise ArgumentError, "requires a block" unless block_given?
server_pool.with do |conn|
yield conn
end
end
|
.worker? ⇒ Boolean
70
71
72
|
# File 'lib/faktory.rb', line 70
def self.worker?
defined?(Faktory::CLI)
end
|
.worker_middleware {|@worker_chain| ... } ⇒ Object
95
96
97
98
99
|
# File 'lib/faktory.rb', line 95
def self.worker_middleware
@worker_chain ||= Middleware::Chain.new
yield @worker_chain if block_given?
@worker_chain
end
|
.💃🕺(io = $stdout) ⇒ Object
123
124
125
126
127
128
129
130
|
# File 'lib/faktory.rb', line 123
def self.💃🕺(io = $stdout)
colors = (31..37).to_a
sz = colors.size
"DANCE MODE ACTIVATED".chars.each_with_index do |chr, idx|
io.print("\e[#{colors[rand(sz)]};1m#{chr}")
end
io.print("\e[0m\n")
end
|