Description

Simple wrapper for YAML config files.

Simple example

# File config/app_config.yml
# development:
#   app_host:
#     name: google.com
#     port: 80
# End of config/app_config.yml
require 'yaml_config'

config = YamlConfig.new(File.join(Rails.root, "config/app_config.yml"), :root => RAILS_ENV)
config.get(:app_host)[:name] # -> "google.com"
config.get(:app_host)[:port] # -> 80
config.get(:app_host)[:some] # -> NullProperty

Different initializations

# using filename
filename = File.join(Rails.root, "config/app_config.yml")
config = YamlConfig.new(filename, :root => RAILS_ENV)
# using open stream
File.open(filename, "r") do |file|
  config = YamlConfig.new(file, :root => RAILS_ENV)
end
# using data string
config = YamlConfig.new(File.read(filename), :root => RAILS_ENV)

Singleton version

In many cases (rails application is the best example) developer needs only one file for whole project. To accomplish this it possible to use singleton version of YamlConfig.

# environment.rb example:
require "yaml_config"
...
filename = File.join(Rails.root, "config/app_config.yml")
config = AppYamlConfig.instance.init!(filename, :root => RAILS_ENV)
...
# Usage
config.get(:username)

Known issues