Module: Mongoid::Config::Options

Included in:
Mongoid::Config
Defined in:
lib/mongoid/config/options.rb

Overview

Encapsulates logic for setting options.

Instance Method Summary collapse

Instance Method Details

#defaultsHash

Get the defaults or initialize a new empty hash.

Examples:

Get the defaults.

options.defaults

Returns:

  • The default options.



16
17
18
# File 'lib/mongoid/config/options.rb', line 16

def defaults
  @defaults ||= {}
end

#log_levelInteger

Get the log level.

Examples:

Get the log level.

config.log_level

Returns:

  • The log level.



92
93
94
95
96
97
98
99
100
# File 'lib/mongoid/config/options.rb', line 92

def log_level
  if level = settings[:log_level]
    unless level.is_a?(Integer)
      # JRuby String#constantize does not work here.
      level = Logger.const_get(level.upcase.to_s)
    end
    level
  end
end

#option(name, options = {}) ⇒ Object

Define a configuration option with a default.

Examples:

Define the option.

Options.option(:logger, :default => Logger.new(STDERR, :warn))

Parameters:

  • The name of the configuration option.

  • (defaults to: {})

    Extras for the option.

Options Hash (options):

  • :default (Object)

    The default value.

  • :on_change (Proc | nil)

    The callback to invoke when the setter is invoked.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/mongoid/config/options.rb', line 31

def option(name, options = {})
  defaults[name] = settings[name] = options[:default]

  class_eval do
    # log_level accessor is defined specially below
    unless name.to_sym == :log_level
      define_method(name) do
        settings[name]
      end
    end

    define_method("#{name}=") do |value|
      old_value = settings[name]
      settings[name] = value

      begin
        options[:on_change]&.call(value)
      rescue
        # If the on_change callback raises an error, we need to roll
        # the change back.
        settings[name] = old_value
        raise
      end
    end

    define_method("#{name}?") do
      !!send(name)
    end
  end
end

#resetHash

Reset the configuration options to the defaults.

Examples:

Reset the configuration options.

config.reset

Returns:

  • The defaults.



68
69
70
71
72
73
74
# File 'lib/mongoid/config/options.rb', line 68

def reset
  # do this via the setter for each option, so that any defined on_change
  # handlers can be invoked.
  defaults.each do |setting, default|
    send(:"#{setting}=", default)
  end
end

#settingsHash

Get the settings or initialize a new empty hash.

Examples:

Get the settings.

options.settings

Returns:

  • The setting options.



82
83
84
# File 'lib/mongoid/config/options.rb', line 82

def settings
  @settings ||= {}
end