class IntercomRails::ConfigSingleton
Public Class Methods
config_accessor(*args, &block)
click to toggle source
# File lib/intercom-rails/config.rb, line 7 def self.config_accessor(*args, &block) config_reader(*args) config_writer(*args, &block) end
config_group(name, &block)
click to toggle source
# File lib/intercom-rails/config.rb, line 29 def self.config_group(name, &block) camelized_name = name.to_s.classify group = self.const_set(camelized_name, Class.new(self)) meta_class.send(:define_method, name) do group end group.send(:instance_variable_set, :@underscored_class_name, name) group.instance_eval(&block) end
config_reader(name)
click to toggle source
# File lib/intercom-rails/config.rb, line 16 def self.config_reader(name) meta_class.send(:define_method, name) do instance_variable_get("@#{name}") end end
config_writer(name, &block)
click to toggle source
# File lib/intercom-rails/config.rb, line 22 def self.config_writer(name, &block) meta_class.send(:define_method, "#{name}=") do |value| validate(name, value, block) instance_variable_set("@#{name}", value) end end
meta_class()
click to toggle source
# File lib/intercom-rails/config.rb, line 12 def self.meta_class class << self; self end end
Private Class Methods
underscored_class_name()
click to toggle source
# File lib/intercom-rails/config.rb, line 53 def self.underscored_class_name @underscored_class_name end
validate(name, value, block)
click to toggle source
# File lib/intercom-rails/config.rb, line 43 def self.validate(name, value, block) return unless block args = [value] if block.arity > 1 field_name = underscored_class_name ? "#{underscored_class_name}.#{name}" : name args << field_name end block.call(*args) end