Sha256: 67a752607ad1b401f66dec57ae1db7b6202ecda201ff020fce8270755d6db274

Contents?: true

Size: 1.3 KB

Versions: 33

Compression:

Stored size: 1.3 KB

Contents

require 'singleton'

class DBAdapter 
  include Singleton

  # Return the database connection...
  # For JRuby platform returned connection has extra missing singleton methods ('execute_batch' and 'close'), 
  # and redefined 'transaction' method (to manage DBI auto-commit behavior)  
  def get_connection(dbfile)
    if defined?(JRUBY_VERSION) # JRuby
      require 'dbi'
      require 'dbd/Jdbc'
      require 'jdbc/sqlite3'
      
      db = DBI.connect("DBI:Jdbc:SQLite:#{dbfile}", nil, nil, 'driver' => 'org.sqlite.JDBC')
      class << db
        # jdbc/sqlite3 has no Database#execute_batch method
        def execute_batch(batch)
          batch.strip.split(';').each do |sth|
            self.do(sth.strip)
          end
        end
        
        # jdbc/sqlite3 instead of 'close' uses 'disconnect' method
        def close
          self.disconnect
        end

        alias_method :do_transaction, :transaction
        # Disable auto-commit, perform transaction and restore default DBI auto-commit behavior 
        def transaction &block
          self['AutoCommit'] = false
          self.do_transaction &block
          self['AutoCommit'] = true        
        end          
      end        
    else # Ruby 1.8/1.9
      require 'sqlite3'
      db = SQLite3::Database.new(dbfile)
    end

    db 
  end   
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
rhoconnect-3.4.5 lib/rhoconnect/db_adapter.rb
rhoconnect-3.4.4 lib/rhoconnect/db_adapter.rb
rhoconnect-3.4.3 lib/rhoconnect/db_adapter.rb
rhoconnect-3.4.2 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.6 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.5 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.4 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.3 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.2 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.1 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.1.beta4 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.1.beta3 lib/rhoconnect/db_adapter.rb
rhoconnect-3.3.1.beta2 lib/rhoconnect/db_adapter.rb
rhoconnect-3.2.1 lib/rhoconnect/db_adapter.rb
rhoconnect-3.2.0 lib/rhoconnect/db_adapter.rb
rhoconnect-3.2.0.beta5 lib/rhoconnect/db_adapter.rb
rhoconnect-3.2.0.beta4 lib/rhoconnect/db_adapter.rb
rhoconnect-3.2.0.beta3 lib/rhoconnect/db_adapter.rb
rhoconnect-3.2.0.beta2 lib/rhoconnect/db_adapter.rb
rhoconnect-3.2.0.beta1 lib/rhoconnect/db_adapter.rb