Class: TrilogyAurora::Client
- Inherits:
-
Object
- Object
- TrilogyAurora::Client
- Defined in:
- lib/trilogy_aurora/client.rb
Overview
Trilogy Aurora wrapper
Instance Attribute Summary collapse
-
#trilogy ⇒ Object
readonly
Returns the value of attribute trilogy.
Class Method Summary collapse
-
.const_defined? ⇒ Boolean
Delegate
const_defined?to TrilogyAurora::Trilogy. -
.const_missing ⇒ Object
Delegate const reference to TrilogyAurora::Trilogy.
-
.method_missing ⇒ Object
Delegate class method calls to TrilogyAurora::Trilogy.
-
.respond_to_missing? ⇒ Boolean
Delegate
respond_to?to TrilogyAurora::Trilogy.
Instance Method Summary collapse
-
#disconnect! ⇒ Object
Close TrilogyAurora::Trilogy connection.
-
#initialize(options = {}) ⇒ Client
constructor
A new instance of Client.
-
#method_missing ⇒ Object
Delegate instance method calls to TrilogyAurora::Trilogy instance.
-
#query ⇒ Object
Execute a TrilogyAurora::Trilogy query, disconnecting or reconnecting after read-only errors based on initialization options.
-
#reconnect! ⇒ Object
Disconnect and re-initialize TrilogyAurora::Trilogy.
-
#respond_to_missing? ⇒ Boolean
Delegate
respond_to?to TrilogyAurora::Trilogy instance.
Constructor Details
#initialize(options = {}) ⇒ Client
Returns a new instance of Client.
10 11 12 |
# File 'lib/trilogy_aurora/client.rb', line 10 def initialize( = {}) @trilogy = TrilogyAurora::Trilogy.new() end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing ⇒ Object
Delegate instance method calls to TrilogyAurora::Trilogy instance.
62 63 64 |
# File 'lib/trilogy_aurora/client.rb', line 62 def method_missing(...) trilogy.public_send(...) end |
Instance Attribute Details
#trilogy ⇒ Object (readonly)
Returns the value of attribute trilogy.
8 9 10 |
# File 'lib/trilogy_aurora/client.rb', line 8 def trilogy @trilogy end |
Class Method Details
.const_defined? ⇒ Boolean
Delegate const_defined? to TrilogyAurora::Trilogy.
87 88 89 |
# File 'lib/trilogy_aurora/client.rb', line 87 def self.const_defined?(...) TrilogyAurora::Trilogy.const_defined?(...) end |
.const_missing ⇒ Object
Delegate const reference to TrilogyAurora::Trilogy.
82 83 84 |
# File 'lib/trilogy_aurora/client.rb', line 82 def self.const_missing(...) TrilogyAurora::Trilogy.const_get(...) end |
.method_missing ⇒ Object
Delegate class method calls to TrilogyAurora::Trilogy.
72 73 74 |
# File 'lib/trilogy_aurora/client.rb', line 72 def self.method_missing(...) TrilogyAurora::Trilogy.public_send(...) end |
.respond_to_missing? ⇒ Boolean
Delegate respond_to? to TrilogyAurora::Trilogy.
77 78 79 |
# File 'lib/trilogy_aurora/client.rb', line 77 def self.respond_to_missing?(...) TrilogyAurora::Trilogy.respond_to?(...) end |
Instance Method Details
#disconnect! ⇒ Object
Close TrilogyAurora::Trilogy connection
22 23 24 25 26 |
# File 'lib/trilogy_aurora/client.rb', line 22 def disconnect! trilogy&.close rescue StandardError nil end |
#query ⇒ Object
Execute a TrilogyAurora::Trilogy query, disconnecting or reconnecting after read-only errors based on initialization options.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/trilogy_aurora/client.rb', line 30 def query(...) # rubocop:disable Metrics/AbcSize try_count = 0 begin trilogy.query(...) rescue TrilogyAurora::Trilogy::Error => e raise unless e.&.include?('--read-only') try_count += 1 if trilogy.[:aurora_disconnect_on_readonly] warn <<~WARNING [trilogy_aurora] Database is readonly, Aurora failover event likely occured. \ Closing database connection WARNING disconnect! elsif try_count <= trilogy.[:aurora_max_retry] retry_interval_seconds = [1.5 * (try_count - 1), 10].min warn <<~WARNING [trilogy_aurora] Database is readonly. \ Retry after #{retry_interval_seconds} seconds WARNING sleep retry_interval_seconds reconnect! retry end raise end end |
#reconnect! ⇒ Object
Disconnect and re-initialize TrilogyAurora::Trilogy
15 16 17 18 19 |
# File 'lib/trilogy_aurora/client.rb', line 15 def reconnect! disconnect! @trilogy = TrilogyAurora::Trilogy.new(@trilogy..dup) end |
#respond_to_missing? ⇒ Boolean
Delegate respond_to? to TrilogyAurora::Trilogy instance.
67 68 69 |
# File 'lib/trilogy_aurora/client.rb', line 67 def respond_to_missing?(...) trilogy.respond_to?(...) end |