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 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