class Config::Options
Constants
- RAILS_RESERVED_NAMES
Some keywords that don’t play nicely with Rails 7.*
- SETTINGS_RESERVED_NAMES
Some keywords that don’t play nicely with OpenStruct
Public Instance Methods
[](param)
click to toggle source
An alternative mechanism for property access. This let’s you do foo along with foo.bar.
Calls superclass method
# File lib/config/options.rb, line 122 def [](param) return super if SETTINGS_RESERVED_NAMES.include?(param) return super if RAILS_RESERVED_NAMES.include?(param) public_send("#{param}") end
[]=(param, value)
click to toggle source
# File lib/config/options.rb, line 128 def []=(param, value) send("#{param}=", value) end
add_source!(source)
click to toggle source
# File lib/config/options.rb, line 17 def add_source!(source) # handle yaml file paths source = (Sources::YAMLSource.new(source)) if source.is_a?(String) || source.is_a?(Pathname) source = (Sources::HashSource.new(source)) if source.is_a?(Hash) @config_sources ||= [] @config_sources << source end
as_json(options = nil)
click to toggle source
# File lib/config/options.rb, line 95 def as_json(options = nil) to_hash.as_json(options) end
each(*args, &block)
click to toggle source
# File lib/config/options.rb, line 86 def each(*args, &block) marshal_dump.each(*args, &block) end
empty?()
click to toggle source
# File lib/config/options.rb, line 13 def empty? marshal_dump.empty? end
has_key?(key)
click to toggle source
# File lib/config/options.rb, line 148 def has_key?(key) @table.has_key?(key) end
key?(key)
click to toggle source
# File lib/config/options.rb, line 144 def key?(key) @table.key?(key) end
keys()
click to toggle source
# File lib/config/options.rb, line 9 def keys marshal_dump.keys end
merge!(hash)
click to toggle source
# File lib/config/options.rb, line 99 def merge!(hash) current = to_hash DeepMerge.deep_merge!( hash.dup, current, preserve_unmergeables: false, knockout_prefix: Config.knockout_prefix, overwrite_arrays: Config.overwrite_arrays, merge_nil_values: Config.merge_nil_values, merge_hash_arrays: Config.merge_hash_arrays ) marshal_load(__convert(current).marshal_dump) self end
method_missing(method_name, *args)
click to toggle source
Calls superclass method
# File lib/config/options.rb, line 152 def method_missing(method_name, *args) if Config.fail_on_missing && method_name !~ /.*(?==\z)/m raise KeyError, "key not found: #{method_name.inspect}" unless key?(method_name) end super end
prepend_source!(source)
click to toggle source
# File lib/config/options.rb, line 26 def prepend_source!(source) source = (Sources::YAMLSource.new(source)) if source.is_a?(String) || source.is_a?(Pathname) source = (Sources::HashSource.new(source)) if source.is_a?(Hash) @config_sources ||= [] @config_sources.unshift(source) end
reload!()
click to toggle source
look through all our sources and rebuild the configuration
# File lib/config/options.rb, line 35 def reload! conf = {} @config_sources.each do |source| source_conf = source.load if conf.empty? conf = source_conf else DeepMerge.deep_merge!( source_conf, conf, preserve_unmergeables: false, knockout_prefix: Config.knockout_prefix, overwrite_arrays: Config.overwrite_arrays, merge_nil_values: Config.merge_nil_values, merge_hash_arrays: Config.merge_hash_arrays ) end end # swap out the contents of the OStruct with a hash (need to recursively convert) marshal_load(__convert(conf).marshal_dump) validate! self end
Also aliased as: load!
reload_from_files(*files)
click to toggle source
# File lib/config/options.rb, line 65 def reload_from_files(*files) Config.load_and_set_settings(files) reload! end
respond_to_missing?(*args)
click to toggle source
Calls superclass method
# File lib/config/options.rb, line 159 def respond_to_missing?(*args) super end
to_hash()
click to toggle source
# File lib/config/options.rb, line 70 def to_hash result = {} marshal_dump.each do |k, v| if v.instance_of? Config::Options result[k] = v.to_hash elsif v.instance_of? Array result[k] = descend_array(v) else result[k] = v end end result end
Also aliased as: to_h
to_json(*args)
click to toggle source
# File lib/config/options.rb, line 90 def to_json(*args) require "json" unless defined?(JSON) to_hash.to_json(*args) end
Protected Instance Methods
descend_array(array)
click to toggle source
# File lib/config/options.rb, line 165 def descend_array(array) array.map do |value| if value.instance_of? Config::Options value.to_hash elsif value.instance_of? Array descend_array(value) else value end end end