class Pluto::Connecter

DB Connecter / Connection Manager

lets you establish connection

Public Class Methods

new() click to toggle source
# File lib/pluto/connecter.rb, line 15
def initialize
  # do nothing for now
end

Public Instance Methods

connect( config={} ) click to toggle source
# File lib/pluto/connecter.rb, line 23
def connect( config={} )

  if config.empty?   # use/try DATABASE_URL from environment

    logger.debug "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"

    db = URI.parse( ENV['DATABASE_URL'] || 'sqlite3:///pluto.db' )

    if db.scheme == 'postgres'
      config = {
        adapter:  'postgresql',
        host:     db.host,
        port:     db.port,
        username: db.user,
        password: db.password,
        database: db.path[1..-1],
        encoding: 'utf8'
      }
    else   # assume sqlite3
      config = {
        adapter:  db.scheme,       # sqlite3
        database: db.path[1..-1]   # pluto.db (NB: cut off leading /, thus 1..-1)
      }
    end
  end  # if config.nil?

  logger.info 'db settings:'
  logger.info config.pretty_inspect

  ##
  ### for dbbrowser and other tools add to ActiveRecord
  ##    todo/fix - find out how to add db config with code
  ##                  in ActiveRecord 6+ !!!!
  ##   for now (old) registration removed / commented out
  ##
  ## if ActiveRecord::Base.configurations.nil?   # todo/check: can this ever happen? remove?
  ##   logger.debug "ActiveRecord configurations nil - set to empty hash"
  ##   ActiveRecord::Base.configurations = {}  # make it an empty hash
  ##  end


  ## todo/fix: remove debug? option - why? why not?
  ##    (just) use logger level eg. logger.debug
  # if debug?
  #  logger.debug 'ar configurations (before):'
  #  logger.debug ActiveRecord::Base.configurations.pretty_inspect
  # end

  ## ActiveRecord::Base.configurations[ 'pluto' ] = config

  # if debug?
  #  logger.debug 'ar configurations (after):'
  #  logger.debug ActiveRecord::Base.configurations.pretty_inspect
  # end

  # for debugging - disable for production use
  if debug?
    ActiveRecord::Base.logger = Logger.new( STDOUT )
  end

  ActiveRecord::Base.establish_connection( config )
end
debug?() click to toggle source
# File lib/pluto/connecter.rb, line 19
def debug?()  Pluto.config.debug?;  end