Class: SanUltari::Config::Store

Inherits:
Object
  • Object
show all
Defined in:
lib/sanultari/config/store.rb

Overview

SanUltari::Config의 설정값들을 실제로 저장하기 위한 객체 method 기반으로 동작하므로, method 이름을 격리하기 위하여 상속받은 동적 타입을 생성하여 사용한다.

See Also:

Author:

  • Jeong, Jiung

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object

설정값에 대해서 Getter와 Setter를 동적으로 생성하기 위한 Handler.



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/sanultari/config/store.rb', line 37

def method_missing(method_name, *args, &block)
  name = method_name.to_s
  name.chomp!('=')

  self.class.instance_eval do
    define_method(name.to_sym) do |&blk|
      blk.call self[name] if blk != nil
      self[name]
    end if not public_methods.include? name.to_sym

    define_method("#{name}=".to_sym) do |value|
      self[name] = value
    end
  end

  send method_name, *args, &block
end

Instance Method Details

#[](name) ⇒ Object

기본 인덱서

Parameters:

  • name (String)

    실제로 저장된 값에 접근하기 위한 접근자



13
14
15
16
17
18
# File 'lib/sanultari/config/store.rb', line 13

def [] name
  @values ||= {}

  @values[name] = SanUltari::Config.new name if @values[name] == nil
  @values[name]
end

#[]=(name, value) ⇒ Object

기본 인덱서 세터

Parameters:

  • name (String)

    값을 저장할 이름. 메서드 이름으로 변경된다.

  • value (Object)

    저장될 값. 현재 테스트된 타입은 Primary types과 List, Hash에 한한다.



24
25
26
27
28
# File 'lib/sanultari/config/store.rb', line 24

def []= name, value
  @values ||= {}

  @values[name] = value
end

#keysObject

현재 저장되어 있는 설정의 Key값 컬렉션을 반환한다.



31
32
33
34
# File 'lib/sanultari/config/store.rb', line 31

def keys
  return [] if @values == nil
  @values.keys
end