boojs 0.0.30 → 0.0.31
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/boojs/version.rb +1 -1
- data/lib/boojs.rb +15 -10
- data/spec/persist_spec.rb +16 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96ee4c56f3d5b80a75b2d084e1c56039dc834e5f
|
4
|
+
data.tar.gz: e044ad6d195d8565faeed8838fd2c8d2bb83a9a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16d8523cbe1210b08f194ebee09fc74be614163fced0f057e5cabfe650ea377ec012752e7cd7659ae9ef122d07488b2ad9671a4a9a277a58ef4c8e02351bf03f
|
7
|
+
data.tar.gz: 618c00d39140585d135f05e39745fe43208c48f95dceff18a6a58855dd5aeb32ed993bd56f2cf78b5c5ae0f2a57eb3808617c507d73dbf8563e320a479cb8e08
|
data/lib/boojs/version.rb
CHANGED
data/lib/boojs.rb
CHANGED
@@ -149,13 +149,6 @@ module BooJS
|
|
149
149
|
puts p.pid
|
150
150
|
end
|
151
151
|
|
152
|
-
#Tell stdout that we did restart
|
153
|
-
if pipe_restart
|
154
|
-
pipe_restart = false
|
155
|
-
puts "$__RESTART_OK__"
|
156
|
-
$stdout.flush
|
157
|
-
end
|
158
|
-
|
159
152
|
loop do
|
160
153
|
rr, _ = select([p, STDIN]); e = rr[0]
|
161
154
|
#PhantomJS has written something
|
@@ -164,7 +157,17 @@ module BooJS
|
|
164
157
|
|
165
158
|
if res =~ /STDIN_PORT/
|
166
159
|
port = res.split(" ")[1].to_i
|
167
|
-
|
160
|
+
unless @in_port
|
161
|
+
start_server(@input_sender_r)
|
162
|
+
end
|
163
|
+
@in_port = port
|
164
|
+
|
165
|
+
#Tell stdout that we did restart
|
166
|
+
if pipe_restart
|
167
|
+
pipe_restart = false
|
168
|
+
puts "$__RESTART_OK__"
|
169
|
+
$stdout.flush
|
170
|
+
end
|
168
171
|
else
|
169
172
|
puts res
|
170
173
|
$stdout.flush
|
@@ -175,6 +178,8 @@ module BooJS
|
|
175
178
|
if e == STDIN
|
176
179
|
res = e.readline
|
177
180
|
if res == "$__RESTART__\n"
|
181
|
+
#You must wait several seconds for fsync
|
182
|
+
sleep 2
|
178
183
|
pipe_restart = true
|
179
184
|
raise PipeRestart
|
180
185
|
else
|
@@ -195,14 +200,14 @@ module BooJS
|
|
195
200
|
exit 1
|
196
201
|
end
|
197
202
|
|
198
|
-
def self.start_server
|
203
|
+
def self.start_server pipe
|
199
204
|
#Server that manages inputs
|
200
205
|
Thread.new do
|
201
206
|
begin
|
202
207
|
loop do
|
203
208
|
rr, __ = IO.select([@input_sender_r], []); e = rr[0]
|
204
209
|
|
205
|
-
uri = URI.parse("http://localhost:#{
|
210
|
+
uri = URI.parse("http://localhost:#{@in_port}")
|
206
211
|
Net::HTTP.post_form(uri, {:str => e.readline})
|
207
212
|
end
|
208
213
|
rescue Exception => e
|
data/spec/persist_spec.rb
CHANGED
@@ -51,17 +51,29 @@ RSpec.describe "Persist" do
|
|
51
51
|
|
52
52
|
end
|
53
53
|
|
54
|
-
it "Does persist during restarts" do
|
54
|
+
it "Does persist localStorage during restarts, but not variables" do
|
55
55
|
Open3.popen3 "ruby -Ilib ./bin/boojs" do |i, o, e, t|
|
56
56
|
begin
|
57
|
-
|
57
|
+
secret = SecureRandom.hex
|
58
|
+
i.puts "localStorage.setItem('#{secret}', '#{secret}');"
|
59
|
+
i.puts "var x = 3;"
|
60
|
+
i.puts "console.log(typeof x === 'undefined');"
|
61
|
+
res = o.readline
|
62
|
+
expect(res).to eq("false\n")
|
63
|
+
|
64
|
+
#Now restart
|
58
65
|
i.puts "$__RESTART__"
|
59
66
|
res = o.readline
|
60
67
|
expect(res).to eq("$__RESTART_OK__\n")
|
61
68
|
|
62
|
-
i.puts "console.log(localStorage.getItem('
|
69
|
+
i.puts "console.log(localStorage.getItem('#{secret}'))"
|
63
70
|
res = o.readline
|
64
|
-
expect(res).to eq("
|
71
|
+
expect(res).to eq("#{secret}\n")
|
72
|
+
|
73
|
+
#X should no longer be set as we restart
|
74
|
+
i.puts "console.log(typeof x === 'undefined');"
|
75
|
+
res = o.readline
|
76
|
+
expect(res).to eq("true\n")
|
65
77
|
ensure
|
66
78
|
begin
|
67
79
|
Process.kill :INT, t[:pid]
|