Class: Philotic::Config
- Inherits:
-
Object
show all
- Includes:
- Defaults
- Defined in:
- lib/philotic/config.rb,
lib/philotic/config/defaults.rb
Defined Under Namespace
Modules: Defaults
Constant Summary
collapse
- ENV_PREFIX =
'PHILOTIC'
Constants included
from Defaults
Defaults::APP_ID, Defaults::AUTOMATICALLY_RECOVER, Defaults::CONNECTION_ATTEMPTS, Defaults::CONTENT_ENCODING, Defaults::CONTENT_TYPE, Defaults::CONTINUATION_TIMEOUT, Defaults::CORRELATION_ID, Defaults::DELETE_EXISTING_QUEUES, Defaults::DISABLE_PUBLISH, Defaults::ENCRYPTION_KEY, Defaults::EXCHANGE_NAME, Defaults::EXCHANGE_TYPE, Defaults::EXPIRATION, Defaults::IMMEDIATE, Defaults::INITIALIZE_NAMED_QUEUES, Defaults::LOG_LEVEL, Defaults::MANDATORY, Defaults::MESSAGE_ID, Defaults::NETWORK_RECOVERY_INTERVAL, Defaults::PERSISTENT, Defaults::PREFETCH_COUNT, Defaults::PRIORITY, Defaults::RABBIT_HOST, Defaults::RABBIT_PASSWORD, Defaults::RABBIT_PORT, Defaults::RABBIT_SCHEME, Defaults::RABBIT_URL, Defaults::RABBIT_USER, Defaults::RABBIT_VHOST, Defaults::RAISE_ERROR_ON_PUBLISH, Defaults::REPLY_TO, Defaults::ROUTING_KEY, Defaults::SERIALIZATIONS, Defaults::TIMESTAMP, Defaults::TYPE, Defaults::USER_ID
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Defaults
#defaults, included
Constructor Details
#initialize(connection, config = {}) ⇒ Config
Returns a new instance of Config.
21
22
23
24
|
# File 'lib/philotic/config.rb', line 21
def initialize(connection, config={})
load_config config
@connection = connection
end
|
Instance Attribute Details
#connection ⇒ Object
Returns the value of attribute connection.
19
20
21
|
# File 'lib/philotic/config.rb', line 19
def connection
@connection
end
|
#message_return_handler ⇒ Object
44
45
46
47
48
|
# File 'lib/philotic/config.rb', line 44
def message_return_handler
@message_return_handler ||= lambda do |basic_return, metadata, payload|
logger.warn { "Philotic message #{JSON.parse payload} was returned! reply_code = #{basic_return.reply_code}, reply_text = #{basic_return.reply_text} headers = #{metadata[:headers]}" }
end
end
|
Instance Method Details
#connection_attempts ⇒ Object
34
35
36
|
# File 'lib/philotic/config.rb', line 34
def connection_attempts
@connection_retries ||= defaults[:connection_attempts].to_i
end
|
#content_type ⇒ Object
93
94
95
|
# File 'lib/philotic/config.rb', line 93
def content_type
Philotic::Serialization::Serializer.factory(serializations.last).content_type
end
|
#load_config(config) ⇒ Object
76
77
78
79
80
81
|
# File 'lib/philotic/config.rb', line 76
def load_config(config)
config.each do |k, v|
mutator = "#{k}="
send(mutator, v) if respond_to? mutator
end
end
|
#load_file(filename, env = 'development') ⇒ Object
83
84
85
86
|
# File 'lib/philotic/config.rb', line 83
def load_file(filename, env = 'development')
config = YAML.load_file(filename)
load_config(config[env])
end
|
#log_level ⇒ Object
30
31
32
|
# File 'lib/philotic/config.rb', line 30
def log_level
@log_level ||= defaults[:log_level].to_i
end
|
#logger ⇒ Object
26
27
28
|
# File 'lib/philotic/config.rb', line 26
def logger
connection.logger
end
|
#parse_rabbit_uri ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/philotic/config.rb', line 50
def parse_rabbit_uri
settings = Bunny::Session.parse_uri(@rabbit_url || defaults[:rabbit_url])
settings[:password] = settings.delete(:pass)
%w[scheme host port user password vhost].each do |setting|
setting = setting.to_sym
current_value = send("rabbit_#{setting}")
if settings[setting] && [Defaults.const_get("rabbit_#{setting}".upcase), nil].include?(current_value)
send("rabbit_#{setting}=", settings[setting])
end
end
end
|
#prefetch_count ⇒ Object
38
39
40
|
# File 'lib/philotic/config.rb', line 38
def prefetch_count
@prefetch_count ||= defaults[:prefetch_count].to_i
end
|
#rabbit_url ⇒ Object
66
67
68
69
|
# File 'lib/philotic/config.rb', line 66
def rabbit_url
parse_rabbit_uri
"#{rabbit_scheme}://#{rabbit_user}:#{rabbit_password}@#{rabbit_host}:#{rabbit_port}/#{CGI.escape rabbit_vhost}"
end
|
#sanitized_rabbit_url ⇒ Object
71
72
73
74
|
# File 'lib/philotic/config.rb', line 71
def sanitized_rabbit_url
parse_rabbit_uri
rabbit_url.gsub("#{rabbit_user}:#{rabbit_password}", '[USER_REDACTED]:[PASSWORD_REDACTED]')
end
|
#serializations ⇒ Object
88
89
90
91
|
# File 'lib/philotic/config.rb', line 88
def serializations
self.serializations = MultiJson.load(defaults[:serializations]) unless @serializations
@serializations
end
|