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