Module: Semian::Redis
- Includes:
- Adapter
- Defined in:
- lib/semian/redis.rb
Constant Summary
collapse
- ResourceBusyError =
::Redis::ResourceBusyError
- CircuitOpenError =
::Redis::CircuitOpenError
- ResolveError =
::Redis::ResolveError
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Adapter
#clear_semian_resource, #semian_resource
Class Method Details
.included(base) ⇒ Object
The naked methods are exposed as ‘raw_query` and `raw_connect` for instrumentation purpose
58
59
60
61
62
63
64
|
# File 'lib/semian/redis.rb', line 58
def self.included(base)
base.send(:alias_method, :raw_io, :io)
base.send(:remove_method, :io)
base.send(:alias_method, :raw_connect, :connect)
base.send(:remove_method, :connect)
end
|
Instance Method Details
#connect ⇒ Object
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/semian/redis.rb', line 82
def connect
acquire_semian_resource(adapter: :redis, scope: :connection) do
begin
raw_connect
rescue SocketError, RuntimeError => e
raise ResolveError.new(semian_identifier) if e.message =~ /(can't resolve)|(name or service not known)/i
raise
end
end
end
|
#io(&block) ⇒ Object
74
75
76
77
78
79
80
|
# File 'lib/semian/redis.rb', line 74
def io(&block)
acquire_semian_resource(adapter: :redis, scope: :query) do
reply = raw_io(&block)
raise_if_out_of_memory(reply)
reply
end
end
|
#semian_identifier ⇒ Object
66
67
68
69
70
71
72
|
# File 'lib/semian/redis.rb', line 66
def semian_identifier
@semian_identifier ||= begin
name = semian_options && semian_options[:name]
name ||= "#{location}/#{db}"
:"redis_#{name}"
end
end
|