Module: ActiveRecord::ConnectionHandling

Defined in:
lib/active_record/rdb_base.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#rdb_connection(config) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/active_record/rdb_base.rb', line 3

def rdb_connection(config)
  require 'fb'
  config = rdb_connection_config(config)
  db = ::Fb::Database.new(config)
  @database = db
  begin
    connection = db.connect
  rescue StandardError
    unless config[:create]
      require 'pp'
      pp config
      raise ConnectionNotEstablished, 'No Firebird connections established.'
    end
    connection = db.create.connect
  end
  ConnectionAdapters::RdbAdapter.new(connection, logger, config)
end

#rdb_connection_config(config) ⇒ Object

Raises:

  • (ArgumentError)


21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/active_record/rdb_base.rb', line 21

def rdb_connection_config(config)
  config = config.symbolize_keys.dup.reverse_merge(downcase_names: true)
  port = config[:port] || 3050
  raise ArgumentError, 'No database specified. Missing argument: database.' unless config[:database]
  config[:database] = File.expand_path(config[:database], defined?(Rails) && Rails.root) if config[:host].nil? || /localhost/i.match?(config[:host])
  config[:database] = "#{config[:host]}/#{port}:#{config[:database]}" if config[:host]
  # config[:charset] = config[:charset].gsub(/-/, '') if config[:charset]
  # config[:encoding] = config[:encoding].gsub(/-/, '') if config[:encoding]
  config[:page_size] = 8192 unless config[:page_size]
  config[:readonly_selects] = true unless config[:readonly_selects].present?
  config
end