Module: Sequel::JDBC

Defined in:
lib/sequel/adapters/jdbc.rb,
lib/sequel/adapters/jdbc/h2.rb,
lib/sequel/adapters/jdbc/as400.rb,
lib/sequel/adapters/jdbc/mssql.rb,
lib/sequel/adapters/jdbc/mysql.rb,
lib/sequel/adapters/jdbc/oracle.rb,
lib/sequel/adapters/jdbc/sqlite.rb,
lib/sequel/adapters/jdbc/postgresql.rb

Overview

Houses Sequel’s JDBC support when running on JRuby.

Defined Under Namespace

Modules: AS400, H2, JavaLang, JavaSQL, JavaxNaming, MSSQL, MySQL, Oracle, Postgres, SQLite Classes: Database, Dataset

Constant Summary collapse

JNDI_URI_REGEXP =

Used to identify a jndi connection and to extract the jndi resource name.

/\Ajdbc:jndi:(.+)/
DECIMAL_TYPE_RE =

The types to check for 0 scale to transform :decimal types to :integer.

/number|numeric|decimal/io
DATABASE_SETUP =

Contains procs keyed on sub adapter type that extend the given database object so it supports the correct database type.

{:postgresql=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/postgresql'
    db.extend(Sequel::JDBC::Postgres::DatabaseMethods)
    JDBC.load_gem('postgres')
    org.postgresql.Driver
  end,
  :mysql=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/mysql'
    db.extend(Sequel::JDBC::MySQL::DatabaseMethods)
    JDBC.load_gem('mysql')
    com.mysql.jdbc.Driver
  end,
  :sqlite=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/sqlite'
    db.extend(Sequel::JDBC::SQLite::DatabaseMethods)
    JDBC.load_gem('sqlite3')
    org.sqlite.JDBC
  end,
  :oracle=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/oracle'
    db.extend(Sequel::JDBC::Oracle::DatabaseMethods)
    Java::oracle.jdbc.driver.OracleDriver
  end,
  :sqlserver=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/mssql'
    db.extend(Sequel::JDBC::MSSQL::DatabaseMethods)
    db.send(:set_mssql_unicode_strings)
    com.microsoft.sqlserver.jdbc.SQLServerDriver
  end,
  :jtds=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/mssql'
    db.extend(Sequel::JDBC::MSSQL::DatabaseMethods)
    db.send(:set_mssql_unicode_strings)
    JDBC.load_gem('jtds')
    Java::net.sourceforge.jtds.jdbc.Driver
  end,
  :h2=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/h2'
    db.extend(Sequel::JDBC::H2::DatabaseMethods)
    JDBC.load_gem('h2')
    org.h2.Driver
  end,
  :as400=>proc do |db|
    Sequel.ts_require 'adapters/jdbc/as400'
    db.extend(Sequel::JDBC::AS400::DatabaseMethods)
    com.ibm.as400.access.AS400JDBCDriver
  end
}

Class Method Summary collapse

Class Method Details

.load_gem(name) ⇒ Object

Allowing loading the necessary JDBC support via a gem, which works for PostgreSQL, MySQL, and SQLite.



83
84
85
86
87
88
89
# File 'lib/sequel/adapters/jdbc.rb', line 83

def self.load_gem(name)
  begin
    Sequel.tsk_require "jdbc/#{name}"
  rescue LoadError
    # jdbc gem not used, hopefully the user has the .jar in their CLASSPATH
  end
end