Module: Redis::Helper::ClassMethods

Defined in:
lib/redis/helper.rb

Overview

クラスメソッド

Instance Method Summary collapse

Instance Method Details

#define_attr_keys(*names, unique_attr: nil) ⇒ Object

固定キーメソッドを作成する

Parameters:

  • names (Array<String|Symbol>)

    キー名

  • unique_attr (String|Symbol) (defaults to: nil)

    インスタンスの固有キーとして使用するメソッド名



62
63
64
65
66
67
68
# File 'lib/redis/helper.rb', line 62

def define_attr_keys(*names, unique_attr: nil)
  names.each do |name|
    define_method(:"#{name}_key") do
      attr_key(name, unique_attr)
    end
  end
end

#generate_key(unique_key, attr_name = nil) ⇒ String

インスタンス固有キーから#attr_key/#instance_keyが返すキーを生成する

Parameters:

  • unique_key (String|Integer)

    インスタンス固有のキー

  • attr_name (String|Symbol) (defaults to: nil)

    attr_key生成時に利用するキー名

Returns:

  • (String)


82
83
84
# File 'lib/redis/helper.rb', line 82

def generate_key(unique_key, attr_name = nil)
  [name, unique_key, attr_name].compact.join(REDIS_KEY_DELIMITER)
end

#lock(base_key) { ... } ⇒ Object

特定のkeyをbaseにしたロックをかけてブロック内の処理を実行

Parameters:

  • base_key (String)

    ロックを取得するリソースのkey

Yields:

  • ロック中に実行する処理のブロック



73
74
75
76
# File 'lib/redis/helper.rb', line 73

def lock(base_key, &block)
  lock_key = [base_key, LOCK_POSTFIX].compact.join(REDIS_KEY_DELIMITER)
  ::Redis::Helper::Lock.new(redis, lock_key).lock(&block)
end

#redisObject

Redis.currentへのショートカット



51
52
53
# File 'lib/redis/helper.rb', line 51

def redis
  @redis ||= ::Redis.current
end

#redis=(conn) ⇒ Object



55
56
57
# File 'lib/redis/helper.rb', line 55

def redis=(conn)
  @redis = conn
end