remotable 0.5.0 → 0.5.1
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/CHANGELOG.md +8 -0
- data/lib/remotable.rb +8 -4
- data/lib/remotable/version.rb +1 -1
- data/test/remotable_test.rb +19 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 137c22fc6804e7a6d4261c63b139287c06aa44020f315318982d9c301cac6676
|
4
|
+
data.tar.gz: caaef13d6e976628e0d94d6dc0a5c615c1a50b14e48b1b66f4d2393e179b2548
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af3a795753d0f1dd53964c02355cc37845228316f3c2361fc9cca3270baede2355f63d88b997e43a93df320930072d1a3bac8a4038795aa4b9322aaaef9ad921
|
7
|
+
data.tar.gz: 42bb95792ed9035a6b4766b4370852ef27b17ceebce9a24d98bc43aac766057ddd67d493a420e2526f0a12e8022f6efe260a21b64e491a6e0a1ef033ec2b538b
|
data/CHANGELOG.md
ADDED
data/lib/remotable.rb
CHANGED
@@ -5,6 +5,7 @@ require "remotable/validate_models"
|
|
5
5
|
require "remotable/with_remote_model_proxy"
|
6
6
|
require "remotable/errors"
|
7
7
|
require "remotable/logger_wrapper"
|
8
|
+
require "active_resource/threadsafe_attributes"
|
8
9
|
|
9
10
|
|
10
11
|
# Remotable keeps a locally-stored ActiveRecord
|
@@ -36,6 +37,7 @@ require "remotable/logger_wrapper"
|
|
36
37
|
module Remotable
|
37
38
|
extend Nosync
|
38
39
|
extend ValidateModels
|
40
|
+
include ThreadsafeAttributes
|
39
41
|
|
40
42
|
# By default, Remotable will validate the models you
|
41
43
|
# supply it via +remote_model+. You can set validate_models
|
@@ -53,6 +55,8 @@ module Remotable
|
|
53
55
|
Remotable.log_level = :debug
|
54
56
|
end
|
55
57
|
|
58
|
+
threadsafe_attribute :_remote_model, :__remotable_included
|
59
|
+
|
56
60
|
|
57
61
|
|
58
62
|
# == remote_model( model [optional] )
|
@@ -88,17 +92,17 @@ module Remotable
|
|
88
92
|
#
|
89
93
|
def remote_model(*args)
|
90
94
|
if args.length >= 1
|
91
|
-
|
95
|
+
self._remote_model = args.first
|
92
96
|
|
93
|
-
|
97
|
+
self.__remotable_included ||= begin
|
94
98
|
require "remotable/active_record_extender"
|
95
99
|
include Remotable::ActiveRecordExtender
|
96
100
|
true
|
97
101
|
end
|
98
102
|
|
99
|
-
extend_remote_model(
|
103
|
+
extend_remote_model(_remote_model) if _remote_model
|
100
104
|
end
|
101
|
-
|
105
|
+
_remote_model
|
102
106
|
end
|
103
107
|
|
104
108
|
|
data/lib/remotable/version.rb
CHANGED
data/test/remotable_test.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "test_helper"
|
2
2
|
require "remotable"
|
3
3
|
require "support/bespoke"
|
4
|
+
require "support/concurrently"
|
4
5
|
|
5
6
|
|
6
7
|
class RemotableTest < ActiveSupport::TestCase
|
@@ -57,6 +58,24 @@ class RemotableTest < ActiveSupport::TestCase
|
|
57
58
|
end
|
58
59
|
end
|
59
60
|
|
61
|
+
test "should support temporary models in a threaded environment" do
|
62
|
+
first_slug = "404"
|
63
|
+
second_slug = "405"
|
64
|
+
|
65
|
+
afterwards do
|
66
|
+
BespokeTenant.where(slug: [ first_slug, second_slug ]).delete_all
|
67
|
+
end
|
68
|
+
|
69
|
+
concurrently do
|
70
|
+
assert_nil BespokeTenant.find_by_slug(first_slug), "Expected not to find the first model initially"
|
71
|
+
assert_not_nil BespokeTenant.with_remote_model(BespokeModel2.new) {
|
72
|
+
BespokeTenant.find_by_slug(first_slug)
|
73
|
+
sleep rand
|
74
|
+
}, "Expected to find the first model with the temporary tenant"
|
75
|
+
assert_nil BespokeTenant.find_by_slug(second_slug), "Expected not to find the second model when searching with the original model again"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
60
79
|
|
61
80
|
|
62
81
|
# ========================================================================= #
|
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.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Lail
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeresource
|
@@ -232,6 +232,7 @@ files:
|
|
232
232
|
- ".simplecov"
|
233
233
|
- ".travis.yml"
|
234
234
|
- Appraisals
|
235
|
+
- CHANGELOG.md
|
235
236
|
- Gemfile
|
236
237
|
- MIT-LICENSE
|
237
238
|
- README.mdown
|
@@ -289,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
289
290
|
- !ruby/object:Gem::Version
|
290
291
|
version: '0'
|
291
292
|
requirements: []
|
292
|
-
rubygems_version: 3.
|
293
|
+
rubygems_version: 3.1.2
|
293
294
|
signing_key:
|
294
295
|
specification_version: 4
|
295
296
|
summary: Binds an ActiveRecord model to a remote resource and keeps the two synchronized
|