wrenchmode-rack 0.0.10 → 0.0.11
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/lib/wrenchmode/rack.rb +32 -10
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 584fb51bc86dff8160908557e0c4ff93c0db93c6
|
4
|
+
data.tar.gz: d37c07aaeacfd306c2d48a2a3893b8a4feb327c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de8659ad78ba58508d49a52e7fdba393460f6ae19a424f0e7f0cc1aaeb175d8f0c79ff9ebec2fb2b19b4d8810d11d85c373e125d831177f5fa961865516c1bbc
|
7
|
+
data.tar.gz: d89904abe80c669836dfdc7b2e52fbc60361351f7ed57a35eaf85e881a33eae72198f94d2596f8eb7094254e1dc8bef50a9a6348ed49f6193d1f0cb3234aa2a8
|
data/lib/wrenchmode/rack.rb
CHANGED
@@ -6,7 +6,7 @@ require 'ipaddr'
|
|
6
6
|
module Wrenchmode
|
7
7
|
class Rack
|
8
8
|
CLIENT_NAME = "wrenchmode-rack"
|
9
|
-
VERSION = '0.0.
|
9
|
+
VERSION = '0.0.11'
|
10
10
|
|
11
11
|
SWITCH_URL_KEY = "switch_url"
|
12
12
|
TEST_MODE_KEY = "test_mode"
|
@@ -45,6 +45,11 @@ module Wrenchmode
|
|
45
45
|
@enable_reverse_proxy = false
|
46
46
|
|
47
47
|
@made_contact = false
|
48
|
+
|
49
|
+
# Use a queue with 0 or 1 items to allow the threads to communicate. When a response from the main Wrenchmode server is received,
|
50
|
+
# parse the JSON and put the hash in the queue. Then, the main request thread will update the underlying middleware state
|
51
|
+
# the next time a request is received.
|
52
|
+
@queue = Queue.new
|
48
53
|
end
|
49
54
|
|
50
55
|
def call(env)
|
@@ -59,6 +64,15 @@ module Wrenchmode
|
|
59
64
|
@check_thread ||= start_check_thread()
|
60
65
|
sleep(0.01) while !@made_contact
|
61
66
|
|
67
|
+
# If we've gotten a new response from the server, use it
|
68
|
+
# to update local status
|
69
|
+
json = begin
|
70
|
+
@queue.pop(true)
|
71
|
+
rescue ThreadError
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
update_status(json) if json
|
75
|
+
|
62
76
|
should_display_wrenchmode = false
|
63
77
|
if @switched
|
64
78
|
req = ::Rack::Request.new(env)
|
@@ -78,9 +92,7 @@ module Wrenchmode
|
|
78
92
|
end
|
79
93
|
end
|
80
94
|
|
81
|
-
def update_status
|
82
|
-
json = fetch_status
|
83
|
-
|
95
|
+
def update_status(json)
|
84
96
|
@switch_url = json[SWITCH_URL_KEY]
|
85
97
|
test_mode = json[TEST_MODE_KEY] || false
|
86
98
|
@switched = json[IS_SWITCHED_KEY] && !(@ignore_test_mode && test_mode)
|
@@ -91,23 +103,30 @@ module Wrenchmode
|
|
91
103
|
@enable_reverse_proxy = json[REVERSE_PROXY_KEY]["enabled"]
|
92
104
|
@reverse_proxy_config = symbolize_keys(json[REVERSE_PROXY_KEY])
|
93
105
|
end
|
106
|
+
end
|
107
|
+
|
108
|
+
private
|
94
109
|
|
95
|
-
|
110
|
+
def fetch_status
|
111
|
+
inner_fetch
|
112
|
+
rescue Net::HTTPError => e
|
96
113
|
log("Wrenchmode Check HTTP Error: #{e.message}")
|
97
114
|
@switched = false
|
115
|
+
nil
|
98
116
|
rescue JSON::JSONError => e
|
99
117
|
log("Wrenchmode Check JSON Error: #{e.message}")
|
100
118
|
@switched = false
|
119
|
+
nil
|
101
120
|
rescue StandardError => e
|
102
121
|
log("Wrenchmode Check Unknown Error: #{e.message}")
|
103
122
|
@switched = false
|
123
|
+
nil
|
104
124
|
ensure
|
105
125
|
@made_contact = true
|
106
126
|
end
|
107
127
|
|
108
|
-
|
109
|
-
|
110
|
-
def fetch_status
|
128
|
+
# Split this one out for easier mocking/stubbing in the specs
|
129
|
+
def inner_fetch
|
111
130
|
payload = JSON.generate(build_update_package)
|
112
131
|
body = nil
|
113
132
|
|
@@ -149,7 +168,11 @@ module Wrenchmode
|
|
149
168
|
def start_check_thread
|
150
169
|
Thread.new do
|
151
170
|
while true do
|
152
|
-
|
171
|
+
if json = fetch_status
|
172
|
+
@queue.clear()
|
173
|
+
@queue.push(json)
|
174
|
+
end
|
175
|
+
|
153
176
|
sleep(@check_delay_secs)
|
154
177
|
end
|
155
178
|
end
|
@@ -202,6 +225,5 @@ module Wrenchmode
|
|
202
225
|
def symbolize_keys(hash)
|
203
226
|
hash.each_with_object({}) { |(k,v), h| h[k.to_sym] = v }
|
204
227
|
end
|
205
|
-
|
206
228
|
end
|
207
229
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wrenchmode-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Micah Wedemeyer
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|