No commit activity in last 3 years
No release in over 3 years
An ActiveRecord DB2 ODBC adapter
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

~> 0.99999
 Project Readme

DB2 ODBCAdapter

Gem Version

An ActiveRecord DB2 ODBC adapter. It is a fork of ActiveRecord odbc_adapter with a minor hack so that it can work only with DB2 Connection on Rails 6+.

Installation

Ensure you have the ODBC driver installed on your machine. And have a DB2 server to connect.

Add this line to your application's Gemfile:

gem 'db2_odbc_adapter'

And then execute:

  $ bundle

Or install it yourself as:

  $ gem install db2_odbc_adapter

Usage

Configure your database.yml by using the dsn to point to a DSN that corresponds to a valid entry in your ~/etc/odbc.ini file. Since Rails 6+ support multiple database, so the database configuration is as follow:

# config/database.yml

default: &default
.
.
.
db2_connection: &db2_connection   // as you wish
  adapter: odbc                   // compulsory 
  dsn: YourDatabaseDSN            // as in the odbc.ini file

development:
  primary:
    .
    .
    .
  db2:
    <<: *db2_connection

test:
  primary:
    .
    .
    .
  db2:
    <<: *db2_connection

production:
  primary:
    .
    .
    .
  db2:
    <<: *db2_connection

and use it at your model as follow.

Single table connection

  class MyTable < ActiveRecord::Base
    establish_connection :db2
    self.table_name  = "TableName"       #table name at DB2 server
    self.primary_key = 'column_name'    #colum that have unique content since db2 have RRN instead of id 
  end

Raw SQL connection

  class MyCustomModel < ActiveRecord::Base
    establish_connection :db2
    scope :scope_name, -> arg {
      connection.exec_query("SELECT * FROM .........WHERE ..'#{arg}...")
    }
  end

ActiveRecord models that use this connection will now be connecting to the configured database using the ODBC driver.

License

The gem is available as open source under the terms of the MIT License.