Class: ILove::Tracing::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/ilove/tracing.rb

Class Method Summary collapse

Class Method Details

.config_param(symbol, default_value = nil, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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