Module: RFlags

Defined in:
lib/rflags.rb,
lib/rflags/flag.rb,
lib/rflags/file_flag.rb,
lib/rflags/redis_flag.rb

Defined Under Namespace

Classes: FileFlag, Flag, RedisFlag

Instance Method Summary collapse

Instance Method Details

#flag(definition) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/rflags.rb', line 7

def flag(definition)
  name, backend = resolve_flag_params(definition)
  instance_variable_set("@#{name}".to_sym, backend)
  instance_eval <<-MTD, __FILE__, __LINE__
    def #{name}
      @#{name}
    end
  MTD
end

#lazy_flag(name, &block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/rflags.rb', line 17

def lazy_flag(name, &block)
  if !block
    raise "RFlags##{__method__} needs a block"
  end

  resolve = -> do
    opts = block.call
    resolve_flag_backend_class(opts).new(*opts)
  end

  instance_variable_set(:"@#{name}_block", resolve)
  instance_eval(<<-MTD, __FILE__, __LINE__)
    def #{name}
      @#{name} ||= @#{name}_block.call
    end
  MTD
end