lib/mongoid/config/options.rb
# encoding: utf-8
module Mongoid
module Config
# Encapsulates logic for setting options.
module Options
# Get the defaults or initialize a new empty hash.
#
# @example Get the defaults.
# options.defaults
#
# @return [ Hash ] The default options.
#
# @since 2.3.0
def defaults
@defaults ||= {}
end
# Define a configuration option with a default.
#
# @example Define the option.
# Options.option(:persist_in_safe_mode, :default => true)
#
# @param [ Symbol ] name The name of the configuration option.
# @param [ Hash ] options Extras for the option.
#
# @option options [ Object ] :default The default value.
#
# @since 2.0.0.rc.1
def option(name, options = {})
defaults[name] = settings[name] = options[:default]
class_eval <<-RUBY
def #{name}
settings[#{name.inspect}]
end
def #{name}=(value)
settings[#{name.inspect}] = value
end
def #{name}?
#{name}
end
RUBY
end
# Reset the configuration options to the defaults.
#
# @example Reset the configuration options.
# config.reset
#
# @return [ Hash ] The defaults.
#
# @since 2.3.0
def reset
settings.replace(defaults)
end
# Get the settings or initialize a new empty hash.
#
# @example Get the settings.
# options.settings
#
# @return [ Hash ] The setting options.
#
# @since 2.3.0
def settings
@settings ||= {}
end
end
end
end