Module: Sequel::ActiveRecordConnection
- Defined in:
- lib/sequel/extensions/activerecord_connection.rb,
lib/sequel/extensions/activerecord_connection/jdbc.rb,
lib/sequel/extensions/activerecord_connection/mysql2.rb,
lib/sequel/extensions/activerecord_connection/sqlite.rb,
lib/sequel/extensions/activerecord_connection/postgres.rb
Defined Under Namespace
Modules: Jdbc, Mysql2, Postgres, Sqlite
Constant Summary collapse
- Error =
Class.new(Sequel::Error)
Instance Attribute Summary collapse
-
#activerecord_model ⇒ Object
Returns the value of attribute activerecord_model.
Class Method Summary collapse
Instance Method Summary collapse
-
#connect ⇒ Object
Ensure Sequel is not creating its own connection anywhere.
- #in_transaction? ⇒ Boolean
-
#synchronize ⇒ Object
Avoid calling Sequel’s connection pool, instead use ActiveRecord.
- #transaction(options = {}) ⇒ Object
Instance Attribute Details
#activerecord_model ⇒ Object
Returns the value of attribute activerecord_model.
17 18 19 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 17 def activerecord_model @activerecord_model end |
Class Method Details
.extended(db) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 5 def self.extended(db) db.activerecord_model = ActiveRecord::Base db.timezone = ActiveRecord::Base.default_timezone begin require "sequel/extensions/activerecord_connection/#{db.adapter_scheme}" db.extend Sequel::ActiveRecordConnection.const_get(db.adapter_scheme.capitalize) rescue LoadError fail Error, "unsupported adapter: #{db.adapter_scheme}" end end |
Instance Method Details
#connect ⇒ Object
Ensure Sequel is not creating its own connection anywhere.
20 21 22 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 20 def connect(*) raise Error, "creating a Sequel connection is not allowed" end |
#in_transaction? ⇒ Boolean
53 54 55 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 53 def in_transaction?(*) activerecord_connection.transaction_open? end |
#synchronize ⇒ Object
Avoid calling Sequel’s connection pool, instead use ActiveRecord.
64 65 66 67 68 69 70 71 72 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 64 def synchronize(*) if ActiveRecord.version >= Gem::Version.new("5.1.0") activerecord_connection.lock.synchronize do yield activerecord_raw_connection end else yield activerecord_raw_connection end end |
#transaction(options = {}) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 24 def transaction( = {}) savepoint = .delete(:savepoint) rollback = .delete(:rollback) auto_savepoint = .delete(:auto_savepoint) server = .delete(:server) fail Error, "#{} transaction options are currently not supported" unless .empty? if in_transaction? requires_new = savepoint || Thread.current[:sequel_activerecord_auto_savepoint] else requires_new = true end activerecord_model.transaction(requires_new: requires_new) do begin Thread.current[:sequel_activerecord_auto_savepoint] = true if auto_savepoint yield rescue Sequel::Rollback => exception raise if rollback == :reraise raise ActiveRecord::Rollback, exception., exception.backtrace ensure Thread.current[:sequel_activerecord_auto_savepoint] = nil if auto_savepoint end raise ActiveRecord::Rollback if rollback == :always end end |