rapidity 0.0.7.369741 → 0.0.8.373200

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
  SHA256:
3
- metadata.gz: b9b41e5968e93c6bcb0d1a323f73890ea6f8ada6e47ff143a7c1fd631083e318
4
- data.tar.gz: d6ec9a04b1c674362757670101dd82fa752c219ade4717a0f08d89cb97f811a2
3
+ metadata.gz: d3def70e3c5647129987af0c2be0161ec2b848dadbe6cbad46f75b8fea3af67e
4
+ data.tar.gz: 01dd8c0f29563020a1b6f6d0aa0e89ff3d809dbe5694ca257b478b32a8005d12
5
5
  SHA512:
6
- metadata.gz: 52c1cb448e7769412f83aa7636a1339d28b04288a3af798b3563ed8d1b2f0904077deb211b556b2660d32bda3f24971424df8ccf812f12f1032bb6d4e705234f
7
- data.tar.gz: e8feb958fae4dbf853d669d75f1caa503aab0b2fb23a9df490c3deceea3b7865f17bdb44f89a7918a76f846018f03a76a8c44e0ff8a2d997e455beba4f4b352f
6
+ metadata.gz: db79ce100ae836e9c992629c23fdb6c163b79e282ec5fbb98bbd60a3709ed85fe0968e61f808f444feb26858fda71a3812e89c429d06215eec2fd050dea045ef
7
+ data.tar.gz: 337db88fdb29d7f6a7a0eb5af05cdf1944a962fab384fcdb8ec1a9968029c2fecbde0cbd186223b08b38d6d6e60e1a1371474c466111bf0b8c867f7cb2cace9a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rapidity (0.0.7.369741)
4
+ rapidity (0.0.8.373200)
5
5
  activesupport
6
6
  connection_pool
7
7
  ostruct
@@ -8,12 +8,15 @@ module Rapidity
8
8
  BASE_SCRIPTS = [:list, :info, :reset, :delete]
9
9
  DEFAULT_KEY_TTL = 6000
10
10
 
11
+ MX = Monitor.new
12
+
11
13
  def initialize(pool, ttl: DEFAULT_KEY_TTL.to_i, logger: nil)
12
14
  @pool = pool
13
15
  @ttl = ttl
14
16
  @logger = logger || Logger.new(STDOUT)
15
17
  @logger.level = Logger::DEBUG
16
18
  # load_redis_scripts
19
+ restore_lua_hashes
17
20
  end
18
21
 
19
22
  # Returns a list of limits matching the pattern
@@ -154,15 +157,45 @@ module Rapidity
154
157
  #
155
158
  # @return [void]
156
159
  def load_redis_scripts
157
- @pool.with do |conn|
158
- (BASE_SCRIPTS + self.class::LUA_SCRIPTS).each do |script|
159
- instance_variable_set("@lua_#{script}".to_sym,
160
- conn.with {|r| r.script(:load, File.read(File.join(__dir__, 'lua_scripts', "#{script.to_s}.lua"))) }
161
- )
160
+ cls = self.class
161
+ MX.synchronize do
162
+ @pool.with do |conn|
163
+ list_lua_scripts.each do |script|
164
+ cls.instance_variable_set(lua_script_var(script),
165
+ conn.with {|r| r.script(:load, File.read(File.join(__dir__, 'lua_scripts', "#{script.to_s}.lua"))) }
166
+ )
167
+ end
162
168
  end
163
169
  end
170
+ restore_lua_hashes
171
+ end
172
+
173
+ # Restore instance script hashes from class cache
174
+ def restore_lua_hashes
175
+ cls = self.class
176
+ list_lua_scripts.each do |script|
177
+ instance_variable_set(lua_script_var(script), cls.instance_variable_get(lua_script_var(script)))
178
+ end
164
179
  end
165
180
 
181
+
182
+ # это для тестов чтобы проверить перезугрузку сриптов
183
+ def reset_lua_scripts
184
+ cls = self.class
185
+ list_lua_scripts.each do |script|
186
+ instance_variable_set(lua_script_var(script), nil)
187
+ end
188
+ end
189
+
190
+ def list_lua_scripts
191
+ (BASE_SCRIPTS + self.class::LUA_SCRIPTS)
192
+ end
193
+
194
+ def lua_script_var(script)
195
+ "@lua_#{script}".to_sym
196
+ end
197
+
198
+
166
199
  end
167
200
  end
168
201
  end
@@ -1,6 +1,6 @@
1
1
  module Rapidity
2
2
 
3
- VERSION = '0.0.7'.freeze
3
+ VERSION = '0.0.8'.freeze
4
4
 
5
5
  end
6
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rapidity
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7.369741
4
+ version: 0.0.8.373200
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yurusov Vlad
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2026-04-22 00:00:00.000000000 Z
12
+ date: 2026-05-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport