lib/configliere/config_file.rb in configliere-0.3.2 vs lib/configliere/config_file.rb in configliere-0.3.3
- old
+ new
@@ -11,18 +11,31 @@
#
module ConfigFile
# Load params from disk.
# * file is in YAML format, as a hash of handle => param_hash pairs
# * filename defaults to Configliere::DEFAULT_CONFIG_FILE (~/.configliere, probably)
- def read handle
+ #
+ # @option [String] :env
+ # If an :env option is given, only the indicated subhash is merged. This
+ # lets you for example specify production / environment / test settings
+ #
+ # @example
+ # # Read from config/apey_eye.yaml and use settings appropriate for development/staging/production
+ # Settings.read(root_path('config/apey_eye.yaml'), :env => (ENV['RACK_ENV'] || 'production'))
+ #
+ def read handle, options={}
filename = filename_for_handle(handle)
begin
params = YAML.load(File.open(filename)) || {}
rescue Errno::ENOENT => e
warn "Loading empty configliere settings file #{filename}"
params = {}
end
params = params[handle] if handle.is_a?(Symbol)
+ # Extract the :env (production/development/etc)
+ if options[:env]
+ params = params[options[:env]]
+ end
deep_merge! params
end
# save to disk.
# * file is in YAML format, as a hash of handle => param_hash pairs