class ILove::Tracing::Configuration

Public Class Methods

config_param(symbol, default_value = nil, &block) click to toggle source
# File lib/ilove/tracing.rb, line 7
      def self.config_param(symbol, default_value = nil, &block)
        raise 'wrong args' if !default_value.nil? && block_given?

        if block_given?
          class_variable_set("@@#{symbol}_default", block)
          class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
            def #{symbol}_default
              instance_eval &@@#{symbol}_default
            end
          RUBY
        else
          class_variable_set("@@#{symbol}_default", default_value)
          class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
            def #{symbol}_default
              @@#{symbol}_default
            end
          RUBY
        end

        class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
          def #{symbol}
            @#{symbol} ||= #{symbol}_default
          end
        RUBY

        class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
          def #{symbol}?
            #{symbol}
          end

          def #{symbol}=(value)
            @#{symbol} = value
          end
        RUBY
      end