Sha256: aaa45383d6444a7b7fd3d6e389d7f27771d91d0f053f0f062ac89a8cacb0946f
Contents?: true
Size: 1.55 KB
Versions: 2
Compression:
Stored size: 1.55 KB
Contents
class ENVied class Configuration attr_reader :current_group, :defaults_enabled, :coercer def initialize(options = {}, &block) @coercer = options.fetch(:coercer, Coercer.new) @defaults_enabled = options.fetch(:enable_defaults, defaults_enabled_default) instance_eval(&block) if block_given? end def defaults_enabled_default if ENV['ENVIED_ENABLE_DEFAULTS'].nil? false else @coercer.coerce(ENV['ENVIED_ENABLE_DEFAULTS'], :boolean) end end def self.load(options = {}) envfile = File.expand_path('Envfile') new(options).tap do |v| v.instance_eval(File.read(envfile), envfile) end end def enable_defaults!(value = true, &block) @defaults_enabled = block_given? ? block.call : value end def defaults_enabled? @defaults_enabled.respond_to?(:call) ? @defaults_enabled.call : @defaults_enabled end def variable(name, *args) options = args.last.is_a?(Hash) ? args.pop : {} type = args.first || :string unless coercer.supported_type?(type) raise ArgumentError, "Variable type (of #{name}) should be one of #{coercer.supported_types}" end options[:group] = current_group if current_group variables << ENVied::Variable.new(name, type, options) end def group(*names, &block) names.each do |name| @current_group = name.to_sym yield end ensure @current_group = nil end def variables @variables ||= [] end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
envied-0.9.1 | lib/envied/configuration.rb |
envied-0.9.0 | lib/envied/configuration.rb |