hotswap 0.2.1 → 0.2.3

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: e2313b39ed36d4fd0d236192de9c34f9ac7546984f8a076d474f035abddef947
4
- data.tar.gz: a7458d108f6d2051a08c89aa3a8357c3cb72ccb892c7669b69d3deeaf1f5abe3
3
+ metadata.gz: 9fb57abbaa8c101d3ec89ba7beb71a1c363fef0dc8504169f3d346851d3df277
4
+ data.tar.gz: cd24097f831156becc966d22fba0aba7db145d2d5eb40b2b90f49048b9090dd2
5
5
  SHA512:
6
- metadata.gz: 53ea80ca58d9f342fc04bc51385674ee5b5f8d3dd64a63a18869b5d4fdc81f8ac74c80a6901991d8709d65aeb565d19a5ca3cbeaa19e1a0408ab4ca9ce0dd154
7
- data.tar.gz: dfbb24c4a439443db7e43d19f65b9964c86505eda6479fa6ec4ca75cba93b25cc619a6d845aa6ca16a822bc187c2f53f8cabdbf66d4ffae98dc9e93682324fbb
6
+ metadata.gz: 1f195e3c1335758d3b6cd69c4f51b34edeb82c1f787b8331909460b2716f0ee72bdd569d740d5c5a61d4c12c60b97432346de97a4fe5b453c2251f9cd246fa7f
7
+ data.tar.gz: 1588206ad76daf621e41c7f98c5f5c8545fde3e5f8fe7cfdd2c295bfba84787d34e56e6ba1d0e5a141a9ac9b1dacd609210e8c4870ff37558bb970f9d02fb5ee
@@ -37,18 +37,15 @@ module Hotswap
37
37
  stderr.write("Swapping database...\n")
38
38
 
39
39
  Middleware::SWAP_LOCK.synchronize do
40
- if defined?(ActiveRecord::Base)
41
- ActiveRecord::Base.connection_handler.clear_all_connections!
42
- logger.info "disconnected ActiveRecord"
43
- end
40
+ logger.info "swap lock acquired, requests are queued"
41
+ ActiveRecord::Base.connection_handler.clear_all_connections!
42
+ logger.info "disconnected ActiveRecord"
44
43
  File.rename(temp.path, @path)
45
44
  logger.info "renamed #{temp.path} → #{@path}"
46
45
  end
47
-
48
- if defined?(ActiveRecord::Base)
49
- ActiveRecord::Base.establish_connection
50
- logger.info "reconnected ActiveRecord"
51
- end
46
+ logger.info "swap lock released, requests resuming"
47
+ ActiveRecord::Base.establish_connection
48
+ logger.info "reconnected ActiveRecord"
52
49
 
53
50
  logger.info "push complete: #{@path}"
54
51
  stdout.write("OK\n")
@@ -7,7 +7,19 @@ module Hotswap
7
7
  end
8
8
 
9
9
  def call(env)
10
- SWAP_LOCK.synchronize { @app.call(env) }
10
+ if SWAP_LOCK.locked?
11
+ logger.info "request queued, waiting for swap to complete: #{env['REQUEST_METHOD']} #{env['PATH_INFO']}"
12
+ SWAP_LOCK.synchronize do
13
+ logger.info "swap complete, resuming request: #{env['REQUEST_METHOD']} #{env['PATH_INFO']}"
14
+ @app.call(env)
15
+ end
16
+ else
17
+ SWAP_LOCK.synchronize { @app.call(env) }
18
+ end
11
19
  end
20
+
21
+ private
22
+
23
+ def logger = Hotswap.logger
12
24
  end
13
25
  end
@@ -1,3 +1,3 @@
1
1
  module Hotswap
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.3"
3
3
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hotswap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2026-02-27 00:00:00.000000000 Z
10
+ date: 2026-02-28 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: thor