Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #428: fb_reconnect_r3190.diff

File fb_reconnect_r3190.diff, 2.2 kB (added by Ken Kunz <kennethkunz@gmail.com>, 3 years ago)

Firebird implementation (based on rev. 3190)

  • activerecord/lib/active_record/connection_adapters/firebird_adapter.rb

    old new  
    3030        raise ArgumentError, "No database specified. Missing argument: database." 
    3131      end 
    3232      options = config[:charset] ? { CHARACTER_SET => config[:charset] } : {} 
     33      connection_params = [config[:username], config[:password], options] 
    3334      db = FireRuby::Database.new_from_params(*config.values_at(:database, :host, :port, :service)) 
    34       connection = db.connect(config[:username], config[:password], options) 
    35       ConnectionAdapters::FirebirdAdapter.new(connection, logger
     35      connection = db.connect(*connection_params) 
     36      ConnectionAdapters::FirebirdAdapter.new(connection, logger, connection_params
    3637    end 
    3738  end 
    3839 
     
    252253      @@boolean_domain = { :true => 1, :false => 0 } 
    253254      cattr_accessor :boolean_domain 
    254255 
     256      def initialize(connection, logger, connection_params=nil) 
     257        super(connection, logger) 
     258        @connection_params = connection_params 
     259      end 
     260 
    255261      def adapter_name # :nodoc: 
    256262        'Firebird' 
    257263      end 
     
    266272        "#{table_name}_seq" 
    267273      end 
    268274 
     275 
    269276      # QUOTING ================================================== 
    270277 
    271278      def quote(value, column = nil) # :nodoc: 
     
    292299        quote(boolean_domain[:false]) 
    293300      end 
    294301 
     302 
     303      # CONNECTION MANAGEMENT ==================================== 
     304 
     305      def active? 
     306        not @connection.closed? 
     307      end 
     308 
     309      def reconnect! 
     310        @connection.close 
     311        @connection = @connection.database.connect(*@connection_params) 
     312      end 
     313 
     314 
    295315      # DATABASE STATEMENTS ====================================== 
    296316 
    297317      def select_all(sql, name = nil) # :nodoc: 
     
    352372        FireRuby::Generator.new(sequence_name, @connection).next(1) 
    353373      end 
    354374 
     375 
    355376      # SCHEMA STATEMENTS ======================================== 
    356377 
    357378      def columns(table_name, name = nil) # :nodoc: