Module: FastConfig

Defined in:
lib/fast_config.rb

Constant Summary collapse

@@config_dir =
nil

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.config_dirObject



10
11
12
# File 'lib/fast_config.rb', line 10

def self.config_dir
  ENV['FAST_CONFIG_DIR'] || @@config_dir || "config"
end

.config_dir=(dir) ⇒ Object



6
7
8
# File 'lib/fast_config.rb', line 6

def self.config_dir=(dir)
  @@config_dir = dir
end

.extended(main_class) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/fast_config.rb', line 14

def self.extended(main_class)
  path = File.expand_path("#{self.config_dir}/#{snake_case(main_class)}.yml")
  configs = YAML.load(ERB.new(File.read(path)).result)
  if configs.has_key?(snake_case(main_class))
    configs[snake_case(main_class)].each{ |k,v| main_class.set(k.to_sym, v) }
  elsif configs.has_key?(snake_case(ENV['ENV']))
    configs[snake_case(ENV['ENV'])].each{ |k,v| main_class.set(k.to_sym, v) }
  end
  super
end

.snake_case(camel_cased_word) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/fast_config.rb', line 34

def self.snake_case(camel_cased_word)
  camel_cased_word.to_s.gsub(/::/, '_').
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
  tr("-", "_").
  downcase
end

Instance Method Details

#set(key, val) ⇒ Object



30
31
32
# File 'lib/fast_config.rb', line 30

def set(key, val)
  settings[key] = val
end

#settingsObject



26
27
28
# File 'lib/fast_config.rb', line 26

def settings
  @settings ||= {}
end