Sha256: 531901f12d17709988a3b1a1662ec56d5c3612fca90052679b52ef9103b1cbbf

Contents?: true

Size: 1.75 KB

Versions: 19

Compression:

Stored size: 1.75 KB

Contents

require 'active_support/core_ext/hash/except'
require 'active_support/core_ext/class/attribute_accessors'

module Rails
  module Sequel

    mattr_accessor :configuration

    class Configuration

      def self.for(root, database_yml_hash)
        Rails::Sequel.configuration ||= new(root, database_yml_hash)
      end

      attr_reader :root, :raw
      attr_accessor :logger
      attr_accessor :migration_dir

      def environment_for(name)
        environments[name.to_s] || environments[name.to_sym]
      end

      def environments
        @environments ||= @raw.inject({}) do |normalized, environment|
          name, config = environment.first, environment.last
          normalized[name] = normalize_repository_config(config)
          normalized
        end
      end

    private

      def initialize(root, database_yml_hash)
        @root, @raw = root, database_yml_hash
      end

      def normalize_repository_config(hash)
        config = {}
        hash.each do |key, value|
          config[key.to_s] = 
            if key.to_s == 'port'
              value.to_i
            elsif key.to_s == 'adapter' && value == 'sqlite3'
              'sqlite'
            elsif key.to_s == 'database' && (hash['adapter'] == 'sqlite3' || 
                                             hash['adapter'] == 'sqlite'  ||
                                             hash[:adapter]  == 'sqlite3' ||
                                             hash[:adapter]  == 'sqlite')
              value == ':memory:' ? value : File.expand_path((hash['database'] || hash[:database]), root)
            elsif key.to_s == 'adapter' && value == 'postgresql'
              'postgres'
            else
              value
            end
        end
        
        config
      end

    end

  end
end

Version data entries

19 entries across 19 versions & 2 rubygems

Version Path
vizzuality-sequel-rails-0.3.7 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.10 lib/sequel-rails/configuration.rb
vizzuality-sequel-rails-0.3.6 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.9 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.8 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.7 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.6 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.5 lib/sequel-rails/configuration.rb
vizzuality-sequel-rails-0.3.5 lib/sequel-rails/configuration.rb
vizzuality-sequel-rails-0.3.4 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.4 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.3 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.2 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.1 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.3.0 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.2.3 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.2.2 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.2.1 lib/sequel-rails/configuration.rb
talentbox-sequel-rails-0.2.0 lib/sequel-rails/configuration.rb