Skip to content

Instantly share code, notes, and snippets.

@10sr
Forked from bowsersenior/stooge_loader.rb
Created July 21, 2018 04:42
Show Gist options
  • Save 10sr/1e0066fff0a4fe0d03b2d5a44bbff50a to your computer and use it in GitHub Desktop.
Save 10sr/1e0066fff0a4fe0d03b2d5a44bbff50a 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