Class: ActiveRecord::ConnectionAdapters::FirebirdAdapter
- Inherits:
-
AbstractAdapter
- Object
- AbstractAdapter
- ActiveRecord::ConnectionAdapters::FirebirdAdapter
- Includes:
- ActiveRecord::ConnectionAdapters::Firebird::DatabaseLimits, ActiveRecord::ConnectionAdapters::Firebird::DatabaseStatements, ActiveRecord::ConnectionAdapters::Firebird::SchemaStatements
- Defined in:
- lib/active_record/connection_adapters/firebird_adapter.rb
Constant Summary collapse
- ADAPTER_NAME =
"Firebird".freeze
- DEFAULT_ENCODING =
"Windows-1252".freeze
Instance Method Summary collapse
- #active? ⇒ Boolean
- #arel_visitor ⇒ Object
- #disconnect! ⇒ Object
- #encoding ⇒ Object
-
#log(sql, name = "SQL", binds = [], type_casted_binds = [], statement_name = nil) ⇒ Object
:doc:.
- #prefetch_primary_key?(table_name = nil) ⇒ Boolean
- #primary_keys(table_name) ⇒ Object
- #reconnect! ⇒ Object
- #reset! ⇒ Object
Instance Method Details
#active? ⇒ Boolean
27 28 29 30 31 32 33 34 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 27 def active? return false unless @connection.open? @connection.query("SELECT 1 FROM RDB$DATABASE") true rescue false end |
#arel_visitor ⇒ Object
19 20 21 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 19 def arel_visitor @arel_visitor ||= Arel::Visitors::Firebird.new(self) end |
#disconnect! ⇒ Object
41 42 43 44 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 41 def disconnect! super @connection.close rescue nil end |
#encoding ⇒ Object
68 69 70 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 68 def encoding ActiveRecord::Base.connection_config[:encoding] || ActiveRecord::ConnectionAdapters::FirebirdAdapter::DEFAULT_ENCODING end |
#log(sql, name = "SQL", binds = [], type_casted_binds = [], statement_name = nil) ⇒ Object
:doc:
72 73 74 75 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 72 def log(sql, name = "SQL", binds = [], type_casted_binds = [], statement_name = nil) # :doc: sql = sql.encode('UTF-8', encoding) if sql.encoding.to_s == encoding super end |
#prefetch_primary_key?(table_name = nil) ⇒ Boolean
23 24 25 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 23 def prefetch_primary_key?(table_name = nil) true end |
#primary_keys(table_name) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 50 def primary_keys(table_name) raise ArgumentError unless table_name.present? names = query_values(<<~SQL, "SCHEMA") SELECT s.rdb$field_name FROM rdb$indices i JOIN rdb$index_segments s ON i.rdb$index_name = s.rdb$index_name LEFT JOIN rdb$relation_constraints c ON i.rdb$index_name = c.rdb$index_name WHERE i.rdb$relation_name = '#{table_name.upcase}' AND c.rdb$constraint_type = 'PRIMARY KEY'; SQL names.map(&:strip).map(&:downcase) end |
#reconnect! ⇒ Object
36 37 38 39 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 36 def reconnect! disconnect! @connection = ::Fb::Database.connect(@config) end |
#reset! ⇒ Object
46 47 48 |
# File 'lib/active_record/connection_adapters/firebird_adapter.rb', line 46 def reset! reconnect! end |