class Sequel::Firebird::Database

  1. lib/sequel/adapters/firebird.rb
Parent: Firebird

Methods

Public Instance

  1. connect
  2. disconnect_connection
  3. execute

Constants

DISCONNECT_ERRORS = /Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements/  

Public Instance methods

connect (server)
[show source]
# File lib/sequel/adapters/firebird.rb, line 15
def connect(server)
  opts = server_opts(server)

  Fb::Database.new(
    :database => "#{opts[:host]}:#{opts[:database]}",
    :username => opts[:user],
    :password => opts[:password]).connect
end
disconnect_connection (conn)
[show source]
# File lib/sequel/adapters/firebird.rb, line 24
def disconnect_connection(conn)
  begin
    conn.close
  rescue Fb::Error
    nil
  end
end
execute (sql, opts=OPTS)
[show source]
# File lib/sequel/adapters/firebird.rb, line 32
def execute(sql, opts=OPTS)
  begin
    synchronize(opts[:server]) do |conn|
      if conn.transaction_started && !_trans(conn)
        conn.rollback
        raise DatabaseDisconnectError, "transaction accidently left open, rolling back and disconnecting"
      end
      r = log_yield(sql){conn.execute(sql)}
      yield(r) if block_given?
      r
    end
  rescue Fb::Error => e
    raise_error(e, :disconnect=>DISCONNECT_ERRORS.match(e.message))
  end
end