Sha256: b4a43b1cfe845f1a0ca71223ef916f6823eb76928b56f3f472158e8ca8fc1ccc

Contents?: true

Size: 1.25 KB

Versions: 4

Compression:

Stored size: 1.25 KB

Contents

require "yaml"

module Frizz
  class Configuration
    YAML_FILENAME = "frizz.yml"

    attr_accessor :access_key_id, :secret_access_key, :environments,
      :current_environment

    def initialize
      self.environments = {}

      # Attempt to load defaults from ENV
      self.access_key_id = ENV["AWS_ACCESS_KEY_ID"]
      self.secret_access_key = ENV["AWS_SECRET_ACCESS_KEY"]
      self.current_environment = ENV["FRIZZ_ENV"] || "development"

      # Allow to be overridden in yaml
      if yaml_exists?
        load_yaml!
        start_yaml_listener
      end
    end

    def environment
      environments[current_environment] || NullEnvironment.new
    end

    def environments=(environments_data)
      @environments = environments_data.each_with_object({}) do |(name, data), obj|
        obj[name] = Environment.new(name, data)
      end
    end

    private

    def yaml_exists?
      File.exists?(YAML_FILENAME)
    end

    def load_yaml!
      YAML.load_file(YAML_FILENAME).each do |key, value|
        send "#{key}=", value
      end
    end

    def start_yaml_listener
      require "listen"

      Listen.to(Dir.pwd) do |modified, added, removed|
        load_yaml! if modified.include? File.expand_path(YAML_FILENAME)
      end.start
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
frizz-2.1.1 lib/frizz/configuration.rb
frizz-2.1.0 lib/frizz/configuration.rb
frizz-2.0.0 lib/frizz/configuration.rb
frizz-1.7.0 lib/frizz/configuration.rb