redis-helper 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a25173829de39977fc53a7cbce6d410ff4b0188
4
- data.tar.gz: f76102b37decddc2368fc6b692947992f0084fc2
3
+ metadata.gz: ceb0adba5e5a54f0881a563103c869af384075d5
4
+ data.tar.gz: e0ab1e2d6f7d588e919535ea9d2c31666831c777
5
5
  SHA512:
6
- metadata.gz: 10c3eb2925050978170f1e0c907b5f1e0f36a0139761ed6d176a46f10fde4afd3844bf900f8b74ca00a5616c9671e73387fd826f949cb4ca3342ac040633046a
7
- data.tar.gz: 2c06e7904f645bc008725c1df941edc9855414c5d520f02e1ec96cdbed04cbf40224a6db397f6d4a1bc1e9cd3003963896bd299698f56ad22bf6f5c24c809411
6
+ metadata.gz: 55adfff73ef1fffeb1e44680afb62ca4261e40eb889ba3b410da23d616b50f713f6ebc3f82a84841582bcb77c67adbba8f6db631e52911c0bf4839d5b3955571
7
+ data.tar.gz: 5e6d72e85495cdf1a3461e107968a75a08e9f01e14923b7551f246e43c90ce0309c78d1cf4f6e095e931731a275853c4339619593e98ff3e9b4b409fdb99c85b
@@ -52,6 +52,10 @@ class Redis
52
52
  @redis ||= ::Redis.current
53
53
  end
54
54
 
55
+ def redis=(conn)
56
+ @redis = conn
57
+ end
58
+
55
59
  # 固定キーメソッドを作成する
56
60
  # @param [Array<String|Symbol>] names キー名
57
61
  # @param [String|Symbol] unique_attr インスタンスの固有キーとして使用するメソッド名
@@ -70,26 +74,30 @@ class Redis
70
74
  lock_key = [base_key, LOCK_POSTFIX].compact.join(REDIS_KEY_DELIMITER)
71
75
  ::Redis::Helper::Lock.new(redis, lock_key).lock(&block)
72
76
  end
77
+
78
+ # インスタンス固有キーから#attr_key/#instance_keyが返すキーを生成する
79
+ # @param [String|Integer] unique_key インスタンス固有のキー
80
+ # @param [String|Symbol] attr_name attr_key生成時に利用するキー名
81
+ # @return [String]
82
+ def generate_key(unique_key, attr_name = nil)
83
+ [name, unique_key, attr_name].compact.join(REDIS_KEY_DELIMITER)
84
+ end
73
85
  end
74
86
 
75
87
  # instance固有のkeyとattr_nameからkeyを生成する
76
88
  # (instanceに複数のkeyを設定したい場合やkeyにattr_nameを含めたい場合に使用する)
77
- # @param [String|Symbol] name キー名
89
+ # @param [String|Symbol] attr_name キー名
78
90
  # @param [String|Symbol] unique_attr インスタンスの固有キーとして使用するメソッド名
79
91
  # @return [String]
80
- def attr_key(name, unique_attr = nil)
81
- [instance_key(unique_attr), name].join(REDIS_KEY_DELIMITER)
92
+ def attr_key(attr_name, unique_attr = nil)
93
+ self.class.generate_key(unique_key(unique_attr), attr_name)
82
94
  end
83
95
 
84
96
  # instance固有のkeyを生成する ("<Class Name>:<unique key>")
85
97
  # @param [String|Symbol] unique_attr インスタンスの固有キーとして使用するメソッド名
86
98
  # @return [String]
87
99
  def instance_key(unique_attr = nil)
88
- attr_name = unique_attr || DEFAULT_UNIQUE_ATTR_NAME
89
- if (unique_key = self.public_send(attr_name)).blank?
90
- raise UnknownUniqueValue, "unique keyとして指定された値(#{attr_name})が取得できません"
91
- end
92
- [self.class.name, unique_key].join(REDIS_KEY_DELIMITER)
100
+ self.class.generate_key(unique_key(unique_attr))
93
101
  end
94
102
 
95
103
  # 引数で指定した時間にexpireするためのttl値を生成
@@ -124,5 +132,15 @@ class Redis
124
132
  def lock(base_key, &block)
125
133
  self.class.lock(base_key, &block)
126
134
  end
135
+
136
+ # インスタンス固有のキーを取得
137
+ # @param [String|Symbol] unique_attr インスタンスの固有キーとして使用するメソッド名
138
+ def unique_key(unique_attr = nil)
139
+ attr_name = unique_attr.presence || DEFAULT_UNIQUE_ATTR_NAME
140
+ if (unique_key = self.public_send(attr_name)).blank?
141
+ raise UnknownUniqueValue, "unique keyとして指定された値(#{attr_name})が取得できません"
142
+ end
143
+ unique_key
144
+ end
127
145
  end
128
146
  end
@@ -1,6 +1,6 @@
1
1
  class Redis
2
2
  module Helper
3
3
  # バージョン
4
- VERSION = "1.2.1".freeze
4
+ VERSION = "1.3.0".freeze
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Narazaka
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-20 00:00:00.000000000 Z
11
+ date: 2017-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis