Module: Sequel::JDBC
- Defined in:
- lib/sequel/adapters/jdbc.rb,
lib/sequel/adapters/jdbc/h2.rb,
lib/sequel/adapters/jdbc/db2.rb,
lib/sequel/adapters/jdbc/jtds.rb,
lib/sequel/adapters/jdbc/derby.rb,
lib/sequel/adapters/jdbc/mssql.rb,
lib/sequel/adapters/jdbc/mysql.rb,
lib/sequel/adapters/jdbc/hsqldb.rb,
lib/sequel/adapters/jdbc/oracle.rb,
lib/sequel/adapters/jdbc/sqlite.rb,
lib/sequel/adapters/jdbc/sqlserver.rb,
lib/sequel/adapters/jdbc/postgresql.rb,
lib/sequel/adapters/jdbc/sqlanywhere.rb,
lib/sequel/adapters/jdbc/transactions.rb
Defined Under Namespace
Modules: DB2, Derby, H2, HSQLDB, JTDS, JavaSQL, MSSQL, MySQL, Oracle, Postgres, SQLServer, SQLite, SqlAnywhere, Transactions Classes: Database, Dataset, TypeConvertor
Constant Summary collapse
- JNDI_URI_REGEXP =
Used to identify a jndi connection and to extract the jndi resource name.
/\Ajdbc:jndi:(.+)/
- DATABASE_SETUP =
Contains procs keyed on subadapter type that extend the given database object so it supports the correct database type.
{}
- NativeException =
Create custom NativeException alias for nicer access, and also so that JRuby 9.2+ so it doesn’t use the deprecated ::NativeException
Java::JavaLang::Exception
- DATABASE_ERROR_CLASSES =
Default database error classes
[NativeException]
Class Method Summary collapse
-
.load_driver(drv, gem = nil) ⇒ Object
Attempt to load the JDBC driver class, which should be specified as a string containing the driver class name (which JRuby should autoload).
-
.load_gem(name) ⇒ Object
Allow loading the necessary JDBC support via a gem.
Class Method Details
.load_driver(drv, gem = nil) ⇒ Object
Attempt to load the JDBC driver class, which should be specified as a string containing the driver class name (which JRuby should autoload). Note that the string is evaled, so this method is not safe to call with untrusted input. Raise a Sequel::AdapterNotFound if evaluating the class name raises a NameError.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/sequel/adapters/jdbc.rb', line 50 def self.load_driver(drv, gem=nil) load_gem(gem) if gem if drv.is_a?(String) eval drv else *try, last = drv try.each do |try_drv| begin return eval(try_drv) rescue NameError end end eval last end rescue NameError raise Sequel::AdapterNotFound, "#{drv} not loaded#{", try installing jdbc-#{gem.to_s.downcase} gem" if gem}" end |
.load_gem(name) ⇒ Object
Allow loading the necessary JDBC support via a gem.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/sequel/adapters/jdbc.rb', line 34 def self.load_gem(name) require "jdbc/#{name.to_s.downcase}" rescue LoadError # jdbc gem not used, hopefully the user has the .jar in their CLASSPATH else if defined?(::Jdbc) && ( ::Jdbc.const_defined?(name) rescue nil ) jdbc_module = ::Jdbc.const_get(name) # e.g. Jdbc::SQLite3 jdbc_module.load_driver if jdbc_module.respond_to?(:load_driver) end end |