class Slnky::Config

Public Class Methods

configure(name, config={}) click to toggle source
# File lib/slnky/config.rb, line 18
def configure(name, config={})
  config.deep_stringify_keys!
  @name = name
  @environment = ENV['SLNKY_ENV'] || config['environment'] || 'development'
  config['service'] = name
  config['environment'] = @environment
  file = ENV['SLNKY_CONFIG']||"~/.slnky/config.yaml"
  config.merge!(config_file(file))
  server = ENV['SLNKY_URL']||config['url']
  config.merge!(config_server(server))
  @config = self.new(config)
end
instance() click to toggle source

def load_file(file)

self.load(YAML.load_file(File.expand_path(file)))

end

# File lib/slnky/config.rb, line 35
def instance
  @config || configure('unknown')
end
reset!() click to toggle source
# File lib/slnky/config.rb, line 39
def reset!
  @config = nil
end

Protected Class Methods

config_file(file) click to toggle source

def merge(config)

@config.merge!(config)

end

# File lib/slnky/config.rb, line 49
def config_file(file)
  return {} if file =~ /\~/ && !ENV['HOME']
  path = File.expand_path(file)
  return {} unless File.exists?(path)
  template = Tilt::ERBTemplate.new(path)
  output = template.render(self, {})
  cfg = YAML.load(output)
  cfg = cfg['slnky'] || cfg
  cfg = cfg[@environment] || cfg
  cfg
rescue => e
  puts "failed to load file #{file}: #{e.message}"
  {}
end
config_server(server) click to toggle source
# File lib/slnky/config.rb, line 64
def config_server(server)
  return {} unless server
  server = "https://#{server}" unless server =~ /^http/
  JSON.parse(open("#{server}/configs/#{@name}") { |f| f.read })
rescue => e
  puts "failed to load server #{server}: #{e.message}"
  {}
end

Public Instance Methods

development?() click to toggle source
# File lib/slnky/config.rb, line 74
def development?
  !self.environment || self.environment == 'development'
end
production?() click to toggle source
# File lib/slnky/config.rb, line 78
def production?
  self.environment == 'production'
end
test?() click to toggle source
# File lib/slnky/config.rb, line 82
def test?
  self.environment == 'test'
end