Class: RabbitJobs::Configuration
- Inherits:
-
Object
- Object
- RabbitJobs::Configuration
show all
- Includes:
- Helpers
- Defined in:
- lib/rabbit_jobs/configuration.rb
Constant Summary
collapse
- DEFAULT_EXCHANGE_PARAMS =
{
auto_delete: false,
durable: true
}
- DEFAULT_QUEUE_PARAMS =
{
auto_delete: false,
exclusive: false,
durable: true,
ack: true
}
- DEFAULT_MESSAGE_PARAMS =
{
persistent: true,
mandatory: true,
immediate: false
}
Instance Method Summary
collapse
Methods included from Helpers
#constantize, #symbolize_keys!
Constructor Details
Returns a new instance of Configuration.
63
64
65
66
67
68
69
70
71
|
# File 'lib/rabbit_jobs/configuration.rb', line 63
def initialize
@data = {
error_log: true,
workers: {},
servers: [],
prefix: 'rabbit_jobs',
queues: {}
}
end
|
Instance Method Details
#[](name) ⇒ Object
73
74
75
|
# File 'lib/rabbit_jobs/configuration.rb', line 73
def [](name)
@data[name]
end
|
#convert_yaml_config(yaml) ⇒ Object
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
|
# File 'lib/rabbit_jobs/configuration.rb', line 188
def convert_yaml_config(yaml)
if yaml['rabbit_jobs']
convert_yaml_config(yaml['rabbit_jobs'])
elsif defined?(Rails) && yaml[Rails.env.to_s]
convert_yaml_config(yaml[Rails.env.to_s])
else
@data = {prefix: nil, queues: {}}
%w(prefix mail_errors_to mail_errors_from).each do |m|
self.send(m, yaml[m])
end
yaml['servers'].split(",").each do |value|
server normalize_url(value)
end
yaml['queues'].each do |name, params|
queue name, symbolize_keys!(params) || {}
end
end
end
|
#default_queue ⇒ Object
170
171
172
173
|
# File 'lib/rabbit_jobs/configuration.rb', line 170
def default_queue
queue('default', DEFAULT_QUEUE_PARAMS) if @data[:queues].empty?
worker_queues.first
end
|
#disable_error_log ⇒ Object
97
98
99
|
# File 'lib/rabbit_jobs/configuration.rb', line 97
def disable_error_log
@data[:error_log] = false
end
|
#error_log ⇒ Object
93
94
95
|
# File 'lib/rabbit_jobs/configuration.rb', line 93
def error_log
@data[:error_log]
end
|
#init_default_queue ⇒ Object
162
163
164
|
# File 'lib/rabbit_jobs/configuration.rb', line 162
def init_default_queue
queue('default', DEFAULT_QUEUE_PARAMS) if @data[:queues].empty?
end
|
#load_file(filename) ⇒ Object
180
181
182
|
# File 'lib/rabbit_jobs/configuration.rb', line 180
def load_file(filename)
load_yaml(File.read(filename))
end
|
#load_yaml(text) ⇒ Object
184
185
186
|
# File 'lib/rabbit_jobs/configuration.rb', line 184
def load_yaml(text)
convert_yaml_config(YAML.load(text))
end
|
#mail_errors_from(email = nil) ⇒ Object
85
86
87
88
89
90
91
|
# File 'lib/rabbit_jobs/configuration.rb', line 85
def mail_errors_from(email = nil)
if email
@data[:mail_errors_from] = email
else
@data[:mail_errors_from]
end
end
|
#mail_errors_to(email = nil) ⇒ Object
77
78
79
80
81
82
83
|
# File 'lib/rabbit_jobs/configuration.rb', line 77
def mail_errors_to(email = nil)
if email
@data[:mail_errors_to] = email
else
@data[:mail_errors_to]
end
end
|
#prefix(value = nil) ⇒ Object
117
118
119
120
121
122
123
124
|
# File 'lib/rabbit_jobs/configuration.rb', line 117
def prefix(value = nil)
if value
raise ArgumentError unless value.is_a?(String) && value != ""
@data[:prefix] = value.downcase
else
@data[:prefix]
end
end
|
#queue(name, params = {}) ⇒ Object
126
127
128
129
130
131
132
133
134
135
136
137
|
# File 'lib/rabbit_jobs/configuration.rb', line 126
def queue(name, params = {})
raise ArgumentError.new("name is #{name.inspect}") unless name && name.is_a?(String) && name != ""
raise ArgumentError.new("params is #{params.inspect}") unless params && params.is_a?(Hash)
name = name.downcase.to_sym
if @data[:queues][name]
@data[:queues][name].merge!(params)
else
@data[:queues][name] = DEFAULT_QUEUE_PARAMS.merge(params)
end
end
|
#queue_name(routing_key) ⇒ Object
175
176
177
178
|
# File 'lib/rabbit_jobs/configuration.rb', line 175
def queue_name(routing_key)
routing_key = routing_key.to_sym
@data[:queues][routing_key][:ignore_prefix] ? routing_key : [@data[:prefix], routing_key].compact.join('#')
end
|
#routing_keys ⇒ Object
158
159
160
|
# File 'lib/rabbit_jobs/configuration.rb', line 158
def routing_keys
@data[:queues].keys
end
|
#server(value = nil) ⇒ Object
110
111
112
113
114
115
|
# File 'lib/rabbit_jobs/configuration.rb', line 110
def server(value = nil)
raise unless value && !value.to_s.empty?
value = normalize_url(value.to_s.strip)
@data[:servers] ||= []
@data[:servers] << value unless @data[:servers].include?(value)
end
|
#servers(*value) ⇒ Object
101
102
103
104
105
106
107
108
|
# File 'lib/rabbit_jobs/configuration.rb', line 101
def servers(*value)
unless value.empty?
@data[:servers] = value.map(&:to_s).map(&:strip).keep_if{|url|!url.empty?}.map {|url|
normalize_url(url)
}
end
@data[:servers]
end
|
#to_hash ⇒ Object
59
60
61
|
# File 'lib/rabbit_jobs/configuration.rb', line 59
def to_hash
@data.dup
end
|
#worker(name, params = {}) ⇒ Object
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
# File 'lib/rabbit_jobs/configuration.rb', line 143
def worker(name, params = {})
raise ArgumentError.new("name is #{name.inspect}") unless name && name.is_a?(String) && name != ""
raise ArgumentError.new("params is #{params.inspect}") unless params && params.is_a?(Hash)
raise ArgumentError.new("params should have :instances and :queues keys.") unless params[:instances] && params[:queues]
name = name.downcase.to_sym
@data[:workers] ||= {}
if @data[:workers][name]
@data[:workers][name].merge!(params)
else
@data[:workers][name] = params
end
end
|
#worker_queues ⇒ Object
166
167
168
|
# File 'lib/rabbit_jobs/configuration.rb', line 166
def worker_queues
@data[:workers].values.map{|w| w[:queues].to_s.split(' ')}.flatten.uniq.sort
end
|
#workers ⇒ Object
139
140
141
|
# File 'lib/rabbit_jobs/configuration.rb', line 139
def workers
@data[:workers] ||= {}
end
|