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

Changeset 4304

Show
Ignore:
Timestamp:
04/28/06 20:04:47 (3 years ago)
Author:
marcel
Message:

Update FrontBase adapter to check binding version. Closes #4920. [mlaster@metavillage.com]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/CHANGELOG

    r4302 r4304  
    11*SVN* 
     2 
     3* Update FrontBase adapter to check binding version. Closes #4920. [mlaster@metavillage.com]  
    24 
    35* New Frontbase connections don't start in auto-commit mode. Closes #4922. [mlaster@metavillage.com] 
  • trunk/activerecord/lib/active_record/connection_adapters/frontbase_adapter.rb

    r4302 r4304  
    1 # Requires FrontBase Ruby bindings from:  
    2 # svn://rubyforge.org/var/svn/frontbase-rails/trunk/ruby-frontbase 
     1# Requires FrontBase Ruby bindings (gem install ruby-frontbase) 
    32 
    43require 'active_record/connection_adapters/abstract_adapter' 
     
    2827        # Turn off colorization since it makes tail/less output difficult 
    2928        self.colorize_logging = false 
    30          
    31         require 'frontbase' 
     29 
     30        require_library_or_gem 'frontbase' unless self.class.const_defined? :FBSQL_Connect 
     31         
     32        # Check bindings version 
     33        version = "0.0.0" 
     34        version = FBSQL_Connect::FB_BINDINGS_VERSION if defined? FBSQL_Connect::FB_BINDINGS_VERSION 
     35         
     36        if ActiveRecord::ConnectionAdapters::FrontBaseAdapter.compare_versions(version,"1.0.0") == -1 
     37          raise AdapterNotFound, 
     38            'The FrontBase adapter requires ruby-frontbase version 1.0.0 or greater; you appear ' << 
     39            "to be running an older version (#{version}) -- please update ruby-frontbase (gem install ruby-frontbase)." 
     40        end 
    3241        connection = FBSQL_Connect.connect(host, port, database, username, password, dbpassword, session_name) 
    3342        ConnectionAdapters::FrontBaseAdapter.new(connection, logger, [host, port, database, username, password, dbpassword, session_name], config) 
    3443      end             
    35     end 
     44    end     
    3645  end 
    3746   
     
    224233 
    225234    class FrontBaseAdapter < AbstractAdapter 
     235         
     236      class << self 
     237        def compare_versions(v1, v2) 
     238          v1_seg  = v1.split(".") 
     239          v2_seg  = v2.split(".") 
     240          0.upto([v1_seg.length,v2_seg.length].min) do |i| 
     241            step  = (v1_seg[i].to_i <=> v2_seg[i].to_i) 
     242            return step unless step == 0 
     243          end 
     244          return v1_seg.length <=> v2_seg.length 
     245        end     
     246      end 
    226247             
    227248      def initialize(connection, logger, connection_options, config)