Module: Sequel::ActiveRecordConnection
- Defined in:
- lib/sequel/extensions/activerecord_connection.rb,
lib/sequel/extensions/activerecord_connection/jdbc.rb,
lib/sequel/extensions/activerecord_connection/utils.rb,
lib/sequel/extensions/activerecord_connection/mysql2.rb,
lib/sequel/extensions/activerecord_connection/oracle.rb,
lib/sequel/extensions/activerecord_connection/sqlite.rb,
lib/sequel/extensions/activerecord_connection/tinytds.rb,
lib/sequel/extensions/activerecord_connection/postgres.rb
Defined Under Namespace
Modules: Jdbc, Mysql2, Oracle, Postgres, Sqlite, Tinytds, Utils
Constant Summary collapse
- Error =
Class.new(Sequel::Error)
- TRANSACTION_ISOLATION_MAP =
{ uncommitted: :read_uncommitted, committed: :read_committed, repeatable: :repeatable_read, serializable: :serializable, }
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.
- #extension ⇒ Object
-
#log_connection_yield(sql, conn, args = nil) ⇒ Object
Log executed queries into Active Record logger as well.
-
#synchronize ⇒ Object
Avoid calling Sequel’s connection pool, instead use Active Record’s.
-
#timezone ⇒ Object
Match database timezone with Active Record.
Instance Attribute Details
#activerecord_model ⇒ Object
Returns the value of attribute activerecord_model.
27 28 29 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 27 def activerecord_model @activerecord_model end |
Class Method Details
.extended(db) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 14 def self.extended(db) db.activerecord_model = ActiveRecord::Base db.opts[:test] = false unless db.opts.key?(:test) db.instance_variable_set(:@transactions, {}) if RUBY_ENGINE == "jruby" begin require "sequel/extensions/activerecord_connection/#{db.adapter_scheme}" db.extend Sequel::ActiveRecordConnection.const_get(db.adapter_scheme.capitalize) rescue LoadError # assume the Sequel adapter already works with Active Record end end |
Instance Method Details
#connect ⇒ Object
Ensure Sequel is not creating its own connection anywhere.
30 31 32 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 30 def connect(*) raise Error, "creating a Sequel connection is not allowed" end |
#extension ⇒ Object
34 35 36 37 38 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 34 def extension(*) super rescue ActiveRecord::NoDatabaseError warn "Sequel database extension #{@loaded_extensions.last.inspect} failed to initialize because there is no database." end |
#log_connection_yield(sql, conn, args = nil) ⇒ Object
Log executed queries into Active Record logger as well.
56 57 58 59 60 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 56 def log_connection_yield(sql, conn, args = nil) sql += "; #{args.inspect}" if args activerecord_log(sql) { super } end |
#synchronize ⇒ Object
Avoid calling Sequel’s connection pool, instead use Active Record’s.
41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 41 def synchronize(*) activerecord_synchronize do conn = activerecord_connection.raw_connection if activerecord_connection_class && !conn.is_a?(activerecord_connection_class) fail Error, "expected Active Record connection to be a #{activerecord_connection_class}, got #{conn.class}" end yield conn ensure clear_activerecord_query_cache end end |
#timezone ⇒ Object
Match database timezone with Active Record.
63 64 65 |
# File 'lib/sequel/extensions/activerecord_connection.rb', line 63 def timezone @timezone || activerecord_timezone end |