Sha256: 11505aeea9f06e9edbec4338452d29e9867834e9bee6cd61580367c7c1e95664

Contents?: true

Size: 1.57 KB

Versions: 21

Compression:

Stored size: 1.57 KB

Contents

require 'logger'
require 'rubber/environment'
require 'rubber/instance'
require 'rubber/generator'

module Rubber
  module Configuration

    @@configurations = {}

    def self.get_configuration(env=nil, root=nil)
      key = "#{env}-#{root}"
      unless @@configurations[key]
        @@configurations[key] = ConfigHolder.new(env, root)
        @@configurations[key].load()
      end
      return @@configurations[key]
    end

    def self.rubber_env
      raise "This convenience method needs Rubber.env to be set" unless Rubber.env
      cfg = Rubber::Configuration.get_configuration(Rubber.env)
      host = cfg.environment.current_host
      roles = cfg.instance[host].role_names rescue nil
      cfg.environment.bind(roles, host)
    end

    def self.rubber_instances
      raise "This convenience method needs Rubber.env to be set" unless Rubber.env
      Rubber::Configuration.get_configuration(Rubber.env).instance
    end

    class ConfigHolder
      def initialize(env=nil, root=nil)
        @env = env
        @root = root || "#{Rubber.root}/config/rubber"
        @environment = Environment.new("#{@root}", @env)
      end

      def load
        config = @environment.bind()
        instance_storage = config['instance_storage']
        instance_storage_backup = config['instance_storage_backup']
        instance_storage ||= "file:#{@root}/instance-#{@env}.yml"
        @instance = Instance.new(instance_storage, :backup => instance_storage_backup)
      end
      
      def environment
        @environment
      end

      def instance
        @instance
      end
    end

  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
rubber-2.6.2 lib/rubber/configuration.rb
rubber-2.6.1 lib/rubber/configuration.rb
rubber-2.6.0 lib/rubber/configuration.rb
rubber-2.5.5 lib/rubber/configuration.rb
rubber-2.5.4 lib/rubber/configuration.rb
rubber-2.5.3 lib/rubber/configuration.rb
rubber-2.5.2 lib/rubber/configuration.rb
rubber-2.5.1 lib/rubber/configuration.rb
rubber-2.5.0 lib/rubber/configuration.rb
rubber-2.4.2 lib/rubber/configuration.rb
rubber-2.4.1 lib/rubber/configuration.rb
rubber-2.4.0 lib/rubber/configuration.rb
rubber-2.3.1 lib/rubber/configuration.rb
rubber-2.3.0 lib/rubber/configuration.rb
rubber-2.2.4 lib/rubber/configuration.rb
rubber-2.2.3 lib/rubber/configuration.rb
rubber-2.2.2 lib/rubber/configuration.rb
rubber-2.2.1 lib/rubber/configuration.rb
rubber-2.2.0 lib/rubber/configuration.rb
rubber-2.1.2 lib/rubber/configuration.rb