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 +4 -4
- data/lib/redis/helper.rb +26 -8
- data/lib/redis/helper/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ceb0adba5e5a54f0881a563103c869af384075d5
|
4
|
+
data.tar.gz: e0ab1e2d6f7d588e919535ea9d2c31666831c777
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55adfff73ef1fffeb1e44680afb62ca4261e40eb889ba3b410da23d616b50f713f6ebc3f82a84841582bcb77c67adbba8f6db631e52911c0bf4839d5b3955571
|
7
|
+
data.tar.gz: 5e6d72e85495cdf1a3461e107968a75a08e9f01e14923b7551f246e43c90ce0309c78d1cf4f6e095e931731a275853c4339619593e98ff3e9b4b409fdb99c85b
|
data/lib/redis/helper.rb
CHANGED
@@ -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]
|
89
|
+
# @param [String|Symbol] attr_name キー名
|
78
90
|
# @param [String|Symbol] unique_attr インスタンスの固有キーとして使用するメソッド名
|
79
91
|
# @return [String]
|
80
|
-
def attr_key(
|
81
|
-
|
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
|
-
|
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
|
data/lib/redis/helper/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2017-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|