module RailsAdmin::Config::Configurable

A module for all configurables.

Public Class Methods

included(base) click to toggle source
# File lib/rails_admin/config/configurable.rb, line 8
def self.included(base)
  base.send :extend, ClassMethods
end

Public Instance Methods

has_option?(name) click to toggle source
# File lib/rails_admin/config/configurable.rb, line 12
def has_option?(name) # rubocop:disable Naming/PredicateName
  options = self.class.instance_variable_get('@config_options')
  options&.key?(name)
end
register_deprecated_instance_option(option_name, replacement_option_name = nil, &custom_error) click to toggle source
# File lib/rails_admin/config/configurable.rb, line 23
def register_deprecated_instance_option(option_name, replacement_option_name = nil, &custom_error)
  scope = class << self; self; end
  self.class.register_deprecated_instance_option(option_name, replacement_option_name, scope, &custom_error)
end
register_instance_option(option_name, &default) click to toggle source

Register an instance option for this object only

# File lib/rails_admin/config/configurable.rb, line 18
def register_instance_option(option_name, &default)
  scope = class << self; self; end
  self.class.register_instance_option(option_name, scope, &default)
end

Private Instance Methods

with_recurring(option_name, value_proc, default_proc) click to toggle source
# File lib/rails_admin/config/configurable.rb, line 30
def with_recurring(option_name, value_proc, default_proc)
  # Track recursive invocation with an instance variable. This prevents run-away recursion
  # and allows configurations such as
  # label { "#{label}".upcase }
  # This will use the default definition when called recursively.
  Thread.current[:rails_admin_recurring] ||= {}
  Thread.current[:rails_admin_recurring][self] ||= {}
  if Thread.current[:rails_admin_recurring][self][option_name]
    instance_eval(&default_proc)
  else
    Thread.current[:rails_admin_recurring][self][option_name] = true
    instance_eval(&value_proc)
  end
ensure
  Thread.current[:rails_admin_recurring].delete(self)
end