Method: DataObjects::Connection.new
- Defined in:
- lib/data_objects/connection.rb
.new(uri_s) ⇒ Object
Make a connection to the database using the DataObjects::URI given. Note that the physical connection may be delayed until the first command is issued, so success here doesn’t necessarily mean you can connect.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/data_objects/connection.rb', line 14 def self.new(uri_s) uri = DataObjects::URI::parse(uri_s) case uri.scheme.to_sym when :java warn 'JNDI URLs (connection strings) are only for use with JRuby' unless RUBY_PLATFORM =~ /java/ driver = uri.query.delete('scheme') driver = uri.query.delete('driver') conn_uri = uri.to_s.gsub(/\?$/, '') when :jdbc warn 'JDBC URLs (connection strings) are only for use with JRuby' unless RUBY_PLATFORM =~ /java/ path = uri.subscheme driver = if path.split(':').first == 'sqlite' 'sqlite3' elsif path.split(':').first == 'postgresql' 'postgres' else path.split(':').first end conn_uri = uri_s # NOTE: for now, do not reformat this JDBC connection # string -- or, in other words, do not let # DataObjects::URI#to_s be called -- as it is not # correctly handling JDBC URLs, and in doing so, causing # java.sql.DriverManager.getConnection to throw a # 'No suitable driver found for...' exception. else driver = uri.scheme conn_uri = uri end # Exceptions to how a driver class is determined for a given URI driver_class = if driver == 'sqlserver' 'SqlServer' else driver.capitalize end clazz = DataObjects.const_get(driver_class)::Connection unless clazz.method_defined? :close if (uri.scheme.to_sym == :java) clazz.class_eval do alias close dispose end else clazz.class_eval do include Pooling alias close release end end end clazz.new(conn_uri) end |