Skip to content

Instantly share code, notes, and snippets.

@kasunbg
Forked from bowsersenior/stooge_loader.rb
Created November 23, 2017 18:22
Show Gist options
  • Save kasunbg/9f6855b8126dbb4078b75d1514771e5b to your computer and use it in GitHub Desktop.
Save kasunbg/9f6855b8126dbb4078b75d1514771e5b to your computer and use it in GitHub Desktop.
A demo of YAML anchors, references and nested values
require 'rubygems'
require 'yaml'
# A demonstration of YAML anchors, references and handling of nested values
# For more info, see:
# http://atechie.net/2009/07/merging-hashes-in-yaml-conf-files/
stooges = YAML::load( File.read('stooges.yml') )
# => {
# "default" => {
# "URL" => "stooges.com",
# "throw_pies?" => true,
# "stooges" => {
# "larry" => "first_stooge",
# "moe" => "second_stooge",
# "curly" => "third_stooge"
# }
# },
# "development" => {
# "URL" => "stooges.local",
# "throw_pies?" => true,
# "stooges" => { # where are the other 3 stooges?
# "shemp" => "fourth_stooge"
# }
# },
# "test" => {
# "URL" => "test.stooges.qa",
# "throw_pies?" => true,
# "stooges" => {
# "larry" => "first_stooge", # all stooges are here because...
# "moe" => "second_stooge", # ...we used `stooges: <<: *stooge_list` in stooges.yml
# "curly" => "third_stooge",
# "shemp" => "fourth_stooge"
# }
# }
# }
default: &DEFAULT
URL: stooges.com
throw_pies?: true
stooges: &stooge_list
larry: first_stooge
moe: second_stooge
curly: third_stooge
development:
<<: *DEFAULT
URL: stooges.local
stooges:
shemp: fourth_stooge
test:
<<: *DEFAULT
URL: test.stooges.qa
stooges:
<<: *stooge_list
shemp: fourth_stooge
# Set custom config options in config/app_cong.yml
# @examples:
# AppConf.use_ssl? # => false
# AppConf.site_color # => "purple"
class AppConf
SETTINGS_HASH = YAML.load_file( Rails.root.join('config', 'app_conf.yml') )[Rails.env]
class << self
def method_missing(method, *args)
SETTINGS_HASH[method.to_s] # could use ClassyStruct here for more features and better performance
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment