Sha256: 32acfdb989a6522b618a8d551f0855dc2fc12867382964137d537ac2bf00b0ba

Contents?: true

Size: 1.24 KB

Versions: 4

Compression:

Stored size: 1.24 KB

Contents

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]
    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"
      listener = Listen.to Dir.pwd

      listener.change do |modified, added, removed|
        load_yaml! if modified.include? "frizz.yml"
      end

      listener.start
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
frizz-1.4.3 lib/frizz/configuration.rb
frizz-1.3.3 lib/frizz/configuration.rb
frizz-1.3.2 lib/frizz/configuration.rb
frizz-1.2.2 lib/frizz/configuration.rb