module WonderOracleDatabase

Constants

VERSION

Public Class Methods

environment() click to toggle source
# File lib/wonder_oracle_database.rb, line 31
def environment
  result = nil

  variable_candidates.each do |e|
    next if result

    result = ENV[e]
  end

  result
end
invalid_variable_error() click to toggle source
# File lib/wonder_oracle_database.rb, line 78
def invalid_variable_error
  message = "Configuração de banco de dados inválida: deve ser no " +
            "formato usuario/senha@[ip/]banco ou obfuscada, valor " +
            "da variável: `#{environment}`."

  false
end
load() click to toggle source
# File lib/wonder_oracle_database.rb, line 27
def load
  parsed_env if present?
end
obfuscate_variable() click to toggle source
# File lib/wonder_oracle_database.rb, line 69
def obfuscate_variable
  parse_obfuscated_variable.split('')                           # cria um array de caracteres
                           .collect { |c| (c.chr.ord + 1).chr } # converte a cadeia de caracteres para seus valores obfuscados
                           .join                                # junta o array em uma string
                           .reverse                             # inverte a string
                           .unpack('H*')                        # converte pra array de hexadecimais
                           .join                                # junta o array em uma string
end
parse_obfuscated_variable() click to toggle source
# File lib/wonder_oracle_database.rb, line 61
def parse_obfuscated_variable
  environment =~ /^(\w+)\/(\w+)@(.+)$/ ? environment : [environment].pack('H*')                          # converte de hex para decimal
                                                                    .reverse                             # inverte a string
                                                                    .split('')                           # cria um array de caracteres
                                                                    .collect { |c| (c.chr.ord - 1).chr } # converte a cadeia de caracteres obfuscados pra seus valores verdadeiros
                                                                    .join                                # junta o array em uma string
end
parsed_env() click to toggle source
# File lib/wonder_oracle_database.rb, line 43
def parsed_env
  match = parse_obfuscated_variable.match(/^(\w+)\/(\w+)@([\d+\.\:]+)\/?(.+)?$/)

  return invalid_variable_error unless match

  usuario, senha, host, banco = match.captures

  {
    username: usuario,
    password: senha,
    database: banco,
    host: host,
    adapter: 'oracle_enhanced',
    shared: true,
    encoding: 'unicode'
  }
end
present?() click to toggle source
# File lib/wonder_oracle_database.rb, line 15
def present?
  !environment.nil?
end
shared?() click to toggle source
# File lib/wonder_oracle_database.rb, line 23
def shared?
  !test? && present? && !load.nil? && load[:shared]
end
test?() click to toggle source
# File lib/wonder_oracle_database.rb, line 19
def test?
  ENV['RAILS_ENV'].to_s.upcase.eql?('TEST')
end
variable_candidates() click to toggle source
# File lib/wonder_oracle_database.rb, line 5
def variable_candidates
  %w[
    PROBUS_NEXT_DATABASE_URL
    PROBUS_DATABASE_URL
    WONDER_DATABASE_URL
    W_DATABASE_URL
    W_HOST_DB_SERVER
  ]
end