redis-helper 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|