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