Sha256: 12e9c8e06f653ce22ae1dc68e2439048ec381a3c65b59466c2f21f4a86b86a57

Contents?: true

Size: 1.47 KB

Versions: 5

Compression:

Stored size: 1.47 KB

Contents

require 'yaml'
require 'erb'

module ActsAsFerret
  module Server
    
    class Config

      ################################################################################
      DEFAULTS = {
        'host'      => 'localhost',
        'port'      => '9009',
        'cf'        => "config/ferret_server.yml",
        'pid_file'  => "log/ferret_server.pid",
        'log_file'  => "log/ferret_server.log",
        'log_level' => 'debug',
        'socket'    => nil,
        'script'    => nil
      }

      ################################################################################
      # load the configuration file and apply default settings
      def initialize(file = DEFAULTS['cf'])
        @everything = YAML.load(ERB.new(IO.read(abs_config_file_path(file))).result)
        raise "malformed ferret server config" unless @everything.is_a?(Hash)
        @config = DEFAULTS.merge(@everything[Rails.env] || {})
        if @everything[Rails.env]
          @config['uri'] = socket.nil? ? "druby://#{host}:#{port}" : "drbunix:#{socket}"
        end
      end
      
      def abs_config_file_path(path)
        if path =~ /^\//
          path
        else
          Rails.root.join(path).to_s
        end
      end

      ################################################################################
      # treat the keys of the config data as methods
      def method_missing (name, *args)
        @config.has_key?(name.to_s) ? @config[name.to_s] : super
      end

    end
    
    
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
acts_as_ferret-0.5.4 lib/acts_as_ferret/server/config.rb
acts_as_ferret-0.5.3 lib/acts_as_ferret/server/config.rb
acts_as_ferret-0.5.2 lib/acts_as_ferret/server/config.rb
acts_as_ferret-0.5.1 lib/acts_as_ferret/server/config.rb
acts_as_ferret-0.5 lib/acts_as_ferret/server/config.rb