Module: ActiveRecord::ConnectionAdapters::TursoAdapter::ConnectionManagement
- Included in:
- ActiveRecord::ConnectionAdapters::TursoAdapter
- Defined in:
- lib/active_record/connection_adapters/turso_adapter/connection_management.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #active? ⇒ Boolean
- #configure_connection ⇒ Object
- #connected? ⇒ Boolean
- #disconnect! ⇒ Object
- #jdbc? ⇒ Boolean
- #raw_connection ⇒ Object
- #reconnect! ⇒ Object
Class Method Details
.included(base) ⇒ Object
7 8 9 10 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 7 def self.included(base) base.extend(ClassMethods) base.set_callback :checkout, :before, :reconnect_for_execution_context end |
Instance Method Details
#active? ⇒ Boolean
20 21 22 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 20 def active? connected? end |
#configure_connection ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 59 def configure_connection @mvcc_enabled = false if @config[:journal_mode] mode = @config[:journal_mode].to_s execute("PRAGMA journal_mode = #{mode}") if @config[:journal_mode].to_s.downcase == "mvcc" @mvcc_enabled = true ActiveRecord::Base.logger&.warn( "Turso journal_mode: mvcc is experimental. Concurrent transactions require careful connection handling." ) end end execute("PRAGMA foreign_keys = ON") autocheckpoint = @config.fetch(:wal_autocheckpoint, 1000) execute("PRAGMA wal_autocheckpoint = #{autocheckpoint.to_i}") timeout = @config[:busy_timeout] || @config[:timeout] || 5000 @raw_connection.busy_timeout = timeout query_timeout = @config[:query_timeout] || 30_000 @raw_connection.query_timeout = query_timeout end |
#connected? ⇒ Boolean
24 25 26 27 28 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 24 def connected? !(@raw_connection.nil? || @raw_connection.closed?) rescue ::Turso::Error false end |
#disconnect! ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 30 def disconnect! super if @raw_connection && !@raw_connection.closed? begin @raw_connection.execute("PRAGMA wal_checkpoint(TRUNCATE)") rescue ::Turso::Error end @raw_connection.close end @raw_connection = nil end |
#jdbc? ⇒ Boolean
55 56 57 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 55 def jdbc? false end |
#raw_connection ⇒ Object
51 52 53 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 51 def raw_connection @lock.synchronize { @raw_connection } end |
#reconnect! ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/active_record/connection_adapters/turso_adapter/connection_management.rb', line 43 def reconnect!(**) @lock.synchronize do disconnect! @raw_connection = self.class.new_client(@config) configure_connection end end |