Module: ConfigFile

Defined in:
lib/config_file.rb,
lib/config_file/file.rb,
lib/config_file/include.rb,
lib/config_file/version.rb

Defined Under Namespace

Modules: ClassMethods, InstanceMethods Classes: BlankSlate, File, UnknownConfigFile, UnknownKey

Constant Summary collapse

ALL =
{}
VERSION =
"0.0.4"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.config_dirsObject



41
42
43
# File 'lib/config_file.rb', line 41

def config_dirs
  @config_dirs ||= %w{config .}
end

.envObject



17
18
19
20
21
22
23
24
25
26
# File 'lib/config_file.rb', line 17

def env
  @env ||= case
  when defined?(ENVIRONMENT)
    ENVIRONMENT
  when defined?(Rails)
    Rails.env
  else
    ENV['RACK_ENV'] || ENV['RAILS_ENV'] || ENV['ENVIRONMENT']
  end
end

.rootObject



28
29
30
31
32
33
34
35
# File 'lib/config_file.rb', line 28

def root
  @root ||= case
  when defined?(Rails)
    Rails.root
  else
    ::Pathname.new(File.expand_path('.'))
  end
end

Class Method Details

.dev?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/config_file.rb', line 37

def dev?
  @dev ||= env == 'development'
end

.included(receiver) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/config_file/include.rb', line 28

def self.included(receiver)
  word = receiver.to_s
  # snake case the class name and look for that as the config file
  word.gsub!(/([A-Z\d]+)([A-Z][a-z])/,'\1_\2')
  word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
  word.tr!("-", "_")
  word.downcase!

  receiver.extend         ClassMethods
  receiver.send :include, InstanceMethods

  receiver.config_file_name = word
end

.method_missing(name, *args) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/config_file.rb', line 45

def method_missing(name,*args)
  ALL[name] ||= if file = find_file(name)
    File.new(file)
  else
    raise UnknownConfigFile, "couldn't find file at 'config/#{name}.yml'"
  end
end