adamhunter/dossier

View on GitHub
lib/dossier/configuration.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'erb'
require 'yaml'

module Dossier
  class Configuration

    DB_KEY = 'DATABASE_URL'.freeze

    attr_accessor :config_path, :client

    def initialize
      @config_path = Rails.root.join('config', 'dossier.yml')
      setup_client!
    end
   
    def connection_options
      yaml_config.merge(dburl_config || {}).presence || raise_empty_conn_config
    end

    def yaml_config
      YAML.load(ERB.new(File.read(config_path)).result)[Rails.env].symbolize_keys
    rescue Errno::ENOENT
      {}
    end
   
    def dburl_config
      Dossier::ConnectionUrl.new.to_hash if ENV.has_key? DB_KEY
    end

    private

    def setup_client!
      @client = Dossier::Client.new(connection_options)
    end

    def raise_empty_conn_config
      raise ConfigurationMissingError.new(
        "Your connection options are blank, you are missing both #{config_path} and ENV['#{DB_KEY}']"
      )
    end

  end

  class ConfigurationMissingError < StandardError ; end
end