Title: [706] trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb: support for dynamically loaded jdbc drivers
Revision
706
Author
tirsen
Date
2007-08-23 23:40:45 -0400 (Thu, 23 Aug 2007)

Log Message

support for dynamically loaded jdbc drivers

Modified Paths


Diff

Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb (705 => 706)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-08-23 23:26:11 UTC (rev 705)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-08-24 03:40:45 UTC (rev 706)
@@ -192,15 +192,21 @@
     end
 
     class JdbcDriver
-      def self.load(driver)
-        driver_class_const = (driver[0...1].capitalize + driver[1..driver.length]).gsub(/\./, '_')
-        unless Jdbc.const_defined?(driver_class_const)
-          Jdbc.module_eval do
-            include_class(driver) {|p,c| driver_class_const }
-          end
-          Jdbc::DriverManager.registerDriver(Jdbc.const_get(driver_class_const).new)
-        end
+      def initialize(name)
+        @name = name
       end
+      
+      def driver_class
+        eval(@name)
+      end
+      
+      def load
+        Jdbc::DriverManager.registerDriver(create)
+      end
+      
+      def create
+        driver_class.new
+      end
     end
 
     class JdbcColumn < Column
@@ -342,8 +348,18 @@
           @config[:url] = url
         end
 
-        JdbcDriver.load(driver)
-        set_connection Jdbc::DriverManager.getConnection(url, user, pass)
+        jdbc_driver = JdbcDriver.new(driver)
+        jdbc_driver.load
+        connection = begin
+            Jdbc::DriverManager.getConnection(url, user, pass)
+          rescue
+            # bypass DriverManager to get around problem with dynamically loaded jdbc drivers
+            props = java.util.Properties.new
+            props.setProperty("user", user)
+            props.setProperty("password", pass)
+            jdbc_driver.create.connect(url, props)
+          end
+        set_connection connection
       end
 
     end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to