remotable 0.6.3 → 0.6.4

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: 0bc89a5dd898f5030f0ced00996be9fe97cf9f56f4817b664feff997b45be1eb
4
- data.tar.gz: 317441824b1507700cd77f17a8a623a472145ee458a3aa6fc68e820f2a0ae1c9
3
+ metadata.gz: 22d6df302d76f75f9abe3c32936decb50fde62e5c5daafadab330c06f4c1d4d8
4
+ data.tar.gz: 78c86070eab49ff4a2f9165d25e2a7d7e029d32406efc5486e14734e67d2ef2b
5
5
  SHA512:
6
- metadata.gz: 69072c80830b9bad844d0d1e2347875577c9de503edc8c0b5c28898e2f9612d5697e089365bd8e554e4dc53375445ba6a813d3c2d8df4619873c72ae327dc1cf
7
- data.tar.gz: 8b5c7e8760947917691c089d19004b8c665f9fa5abaa35873fe9d203247a832f882ee10e7c39059f249aa34133cf8e79140c745aaf3c2bf082e43495d3187583
6
+ metadata.gz: 15f59309c923c6ec21ec559852e65be75faeebd1c711eccffe09766451bb692e024b4eaa431614b27c9dc8f37c721213563951f2159030b7ce523865e26b5179
7
+ data.tar.gz: 6baecf50d8df1c784b82352aed90ec4af6bfb83b0c81e004ccd5e2309d42a0c72f3f2067c17aaf34217fd848223fc0e74f26247de4a0fa97fd5056d8949a1f18
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ### 0.6.4
4
+ * **Feature** Added `Remotable.unsafe_nosync!` method to set `nosync` globally using a class variable. As the method name indicates, this is not threadsafe and should only be used for testing or other situations where thread safety is not an issue.
5
+ * **Bugfix** Stopped deferring to `Thread.main` if `nosync` was unset on the current thread; while convenient for tests (see above), it ended up allowing requests to leak state if they were handled on the main thread.
6
+
7
+
3
8
  ### 0.6.3
4
9
  * **Fix** Replaced deprecated calls to URI.escape
5
10
 
@@ -50,8 +50,14 @@ module Remotable
50
50
  module ClassMethods
51
51
  include InstanceMethods
52
52
 
53
+ def unsafe_nosync!
54
+ nosync!
55
+ @_unsafe_nosync = true
56
+ end
57
+
53
58
  def reset_nosync!
54
59
  self.nosync = nil
60
+ remove_instance_variable :@_unsafe_nosync if instance_variable_defined? :@_unsafe_nosync
55
61
  end
56
62
 
57
63
  def nosync=(val)
@@ -62,7 +68,7 @@ module Remotable
62
68
 
63
69
  def _nosync
64
70
  return Thread.current.thread_variable_get "remotable.nosync.#{self.object_id}" if nosync_defined_on?(Thread.current)
65
- return Thread.main.thread_variable_get "remotable.nosync.#{self.object_id}" if nosync_defined_on?(Thread.main)
71
+ @_unsafe_nosync if instance_variable_defined?(:@_unsafe_nosync)
66
72
  end
67
73
 
68
74
  def _nosync=(value)
@@ -1,3 +1,3 @@
1
1
  module Remotable
2
- VERSION = "0.6.3"
2
+ VERSION = "0.6.4"
3
3
  end
@@ -48,11 +48,9 @@ class NoSyncTest < ActiveSupport::TestCase
48
48
  assert_equal true, Tenant.nosync?
49
49
  end
50
50
 
51
- test "nosync? should defer to the main thread's value if set there but not on the current thread" do
51
+ test "nosync? should not defer to the main thread's value if set there but not on the current thread" do
52
52
  Remotable.nosync!
53
53
  subthread = Thread.new do
54
- assert Remotable.nosync?
55
- Remotable.reset_nosync!
56
54
  refute Remotable.nosync?
57
55
  Thread.stop
58
56
  end
@@ -60,6 +58,16 @@ class NoSyncTest < ActiveSupport::TestCase
60
58
  assert Remotable.nosync?
61
59
  end
62
60
 
61
+ test "unsafe_nosync! should coerce nosync? to true across threads" do
62
+ Remotable.unsafe_nosync!
63
+ subthread = Thread.new do
64
+ assert Remotable.nosync?
65
+ Thread.stop
66
+ end
67
+ sleep 0.1 while subthread.status != "sleep"
68
+ assert Remotable.nosync?
69
+ end
70
+
63
71
 
64
72
 
65
73
  # ========================================================================= #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remotable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Lail
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-20 00:00:00.000000000 Z
11
+ date: 2020-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activeresource