module Sequel::JDBC
Constants
- DATABASE_ERROR_CLASSES
Default database error classes
- DATABASE_SETUP
Contains procs keyed on subadapter type that extend the given database object so it supports the correct database type.
- JNDI_URI_REGEXP
Used to identify a jndi connection and to extract the jndi resource name.
- NativeException
Create custom
NativeException
alias for nicer access, and also so that JRuby 9.2+ so it doesn’t use the deprecated ::NativeException
Public Class Methods
load_driver(drv, gem=nil)
click to toggle source
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.
# File lib/sequel/adapters/jdbc.rb 50 def self.load_driver(drv, gem=nil) 51 load_gem(gem) if gem 52 if drv.is_a?(String) 53 eval drv 54 else 55 *try, last = drv 56 try.each do |try_drv| 57 begin 58 return eval(try_drv) 59 rescue NameError 60 end 61 end 62 63 eval last 64 end 65 rescue NameError 66 raise Sequel::AdapterNotFound, "#{drv} not loaded#{", try installing jdbc-#{gem.to_s.downcase} gem" if gem}" 67 end
load_gem(name)
click to toggle source
Allow loading the necessary JDBC
support via a gem.
# File lib/sequel/adapters/jdbc.rb 34 def self.load_gem(name) 35 require "jdbc/#{name.to_s.downcase}" 36 rescue LoadError 37 # jdbc gem not used, hopefully the user has the .jar in their CLASSPATH 38 else 39 if defined?(::Jdbc) && ( ::Jdbc.const_defined?(name) rescue nil ) 40 jdbc_module = ::Jdbc.const_get(name) # e.g. Jdbc::SQLite3 41 jdbc_module.load_driver if jdbc_module.respond_to?(:load_driver) 42 end 43 end