Sha256: 14d275664ab132ad0bc9ad1b80b28ffb1bad70941790d996946f35e521738a8a
Contents?: true
Size: 1.64 KB
Versions: 3
Compression:
Stored size: 1.64 KB
Contents
require 'appsent/tools' require 'appsent/config_value' require 'appsent/config_file' class AppSent class ConfigPathNotSet < ArgumentError; end class EnvironmentNotSet < ArgumentError; end class BlockRequired < StandardError; end class Error < LoadError; end @@config_path = nil @@environment = nil @@config_files = [] def self.init opts={},&block raise ConfigPathNotSet unless opts[:path] raise EnvironmentNotSet unless opts[:env] raise BlockRequired unless block_given? caller_filename = caller.first.split(':').first @@config_path = File.expand_path(File.join(File.dirname(caller_filename),opts[:path])) @@environment = opts[:env] settings = self.new settings.instance_exec(&block) if settings.all_valid? settings.load! else raise AppSent::Error, settings.full_error_message end end def self.config_files @@config_files end def self.config_path @@config_path end def initialize @configs=[] end def all_valid? @configs.ask_all? { |conf_file| conf_file.valid? } end def load! @configs.each do |config| self.class.const_set(config.constantized,config.data) end end def full_error_message error_description = '' @configs.each do |config| error_description += config.error_message+"\n" unless config.valid? end "failed to load some configuration files\n\n"+error_description end private def method_missing config, args={}, &block config = config.to_s @@config_files << config @configs << ConfigFile.new(@@config_path,config,@@environment,args[:type],&block) end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
appsent-0.0.3 | lib/appsent.rb |
appsent-0.0.2 | lib/appsent.rb |
appsent-0.0.1 | lib/appsent.rb |