Sha256: a4ee06e265f80ee8cdcc07d699326e323566d07d6cf90d8ea3f0b86c63140ff6

Contents?: true

Size: 1.33 KB

Versions: 3

Compression:

Stored size: 1.33 KB

Contents

require 'pathname'
require 'extlib/pathname'

require 'rails_datamapper/session_store'

module Rails
  module DataMapper
    class << self
      extend ActiveSupport::Memoizable

      def create_connection
        # TODO: handle Rails and Merb style database.yml files
        conf = config.dup
        repositories = conf.delete(:repositories)
        ::DataMapper.setup(:default, conf) unless conf.empty?
      end

    private

      def config_file
        Rails.root / 'config' / 'database.yml'
      end

      def full_config
        YAML::load(ERB.new(config_file.read).result)
      end

      memoize :full_config

      def config
        if hash = full_config[Rails.env] || full_config[Rails.env.to_sym]
          normalize_config(hash)
        else
          raise ArgumentError, "missing environment '#{Rails.env}' in config file #{config_file}"
        end
      end

      memoize :config

      def normalize_config(hash)
        config = {}

        hash.symbolize_keys.each do |key, value|
          config[key] = if value.kind_of?(Hash)
            normalize_config(value)
          elsif key == :port
            value.to_i
          elsif key == :adapter && value == 'postgresql'
            'postgres'
          else
            value
          end
        end

        config
      end
    end
  end
end

Rails::DataMapper.create_connection

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rails_datamapper-0.10.2 lib/rails_datamapper.rb
rails_datamapper-0.10.1 lib/rails_datamapper.rb
rails_datamapper-0.10.0 lib/rails_datamapper.rb