oop_rails_server 0.0.11 → 0.0.12
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/CHANGES.md +5 -0
- data/lib/oop_rails_server/rails_server.rb +33 -27
- data/lib/oop_rails_server/version.rb +1 -1
- 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: 64166a5f8c1b10c4954ae6fbee47d79fee0c1065
|
4
|
+
data.tar.gz: b9e67fb02b818e4d65a5189a91096d82f33733e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06e6d7d246ddb75ed3e6866505f34f2714c7ad8b94bb8d79899eb916c514dbd877bbd82b8fa8bc27959733e4abeed60edebb0ce19058a558350fbbb0a61bdaa1
|
7
|
+
data.tar.gz: c362495d9d4b97c349dd60d87c7953d55b61c8eff112f3166fd793a76067e77452e42d56a6b90d8cd95d86cf96916022e7f2649550ccb50859b5489a288a0e5d
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# `oop_rails_server` Releases
|
2
2
|
|
3
|
+
## 0.0.12, 4 October 2015
|
4
|
+
|
5
|
+
* Much better error output if the Rails server fails to start up, and willingness to keep trying if it returns an
|
6
|
+
error 500 instead of 200 -- occasionally this can happen immediately after startup, on some platforms.
|
7
|
+
|
3
8
|
## 0.0.11, 4 October 2015
|
4
9
|
|
5
10
|
* Bump up the timeout we use for verifying that the server has started up properly. Travis CI with JRuby sometimes
|
@@ -153,6 +153,23 @@ module OopRailsServer
|
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
+
def raise_startup_failed_error!(elapsed_time, exception)
|
157
|
+
last_lines = server_logfile = nil
|
158
|
+
if File.exist?(server_output_file) && File.readable?(server_output_file)
|
159
|
+
server_logfile = server_output_file
|
160
|
+
File::Tail::Logfile.open(server_output_file, :break_if_eof => true) do |f|
|
161
|
+
f.extend(File::Tail)
|
162
|
+
last_lines ||= [ ]
|
163
|
+
begin
|
164
|
+
f.tail(100) { |l| last_lines << l }
|
165
|
+
rescue File::Tail::BreakException
|
166
|
+
# ok
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
raise FailedStartupError.new(elapsed_time, exception, server_logfile, last_lines)
|
172
|
+
end
|
156
173
|
|
157
174
|
def setup_directories!
|
158
175
|
return if @directories_setup
|
@@ -268,7 +285,7 @@ EOS
|
|
268
285
|
|
269
286
|
def start_server!
|
270
287
|
output = server_output_file
|
271
|
-
cmd = "rails server -p #{port} > '#{output}' 2>&1"
|
288
|
+
cmd = "bundle exec rails server -p #{port} > '#{output}' 2>&1"
|
272
289
|
safe_system(cmd, "starting 'rails server' on port #{port}", :background => true)
|
273
290
|
|
274
291
|
server_pid_file = File.join(rails_root, 'tmp', 'pids', 'server.pid')
|
@@ -301,9 +318,9 @@ EOS
|
|
301
318
|
end
|
302
319
|
|
303
320
|
class FailedStartupError < StandardError
|
304
|
-
attr_reader :timeout, :
|
321
|
+
attr_reader :timeout, :verify_exception_or_message, :server_logfile, :last_lines
|
305
322
|
|
306
|
-
def initialize(timeout,
|
323
|
+
def initialize(timeout, verify_exception_or_message, server_logfile, last_lines)
|
307
324
|
message = %{The out-of-process Rails server failed to start up properly and start responding to requests,
|
308
325
|
even after #{timeout.round} seconds. This typically means you've added code that prevents it from
|
309
326
|
even starting up -- most likely, a syntax error in a class or other error that stops it
|
@@ -328,7 +345,7 @@ The last #{last_lines.length} lines of this log are:
|
|
328
345
|
super(message)
|
329
346
|
|
330
347
|
@timeout = timeout
|
331
|
-
@
|
348
|
+
@verify_exception_or_message = verify_exception_or_message
|
332
349
|
@server_logfile = server_logfile
|
333
350
|
@last_lines = last_lines
|
334
351
|
end
|
@@ -342,39 +359,28 @@ The last #{last_lines.length} lines of this log are:
|
|
342
359
|
|
343
360
|
data = nil
|
344
361
|
start_time = Time.now
|
345
|
-
|
362
|
+
last_exception = nil
|
363
|
+
|
364
|
+
while Time.now < (start_time + SERVER_VERIFY_TIMEOUT)
|
365
|
+
sleep 0.1
|
346
366
|
begin
|
347
367
|
data = Net::HTTP.get_response(uri)
|
348
368
|
rescue Errno::ECONNREFUSED, EOFError => e
|
349
|
-
|
350
|
-
last_lines = server_logfile = nil
|
351
|
-
if File.exist?(server_output_file) && File.readable?(server_output_file)
|
352
|
-
server_logfile = server_output_file
|
353
|
-
File::Tail::Logfile.open(server_output_file, :break_if_eof => true) do |f|
|
354
|
-
f.extend(File::Tail)
|
355
|
-
last_lines ||= [ ]
|
356
|
-
begin
|
357
|
-
f.tail(100) { |l| last_lines << l }
|
358
|
-
rescue File::Tail::BreakException
|
359
|
-
# ok
|
360
|
-
end
|
361
|
-
end
|
362
|
-
end
|
363
|
-
|
364
|
-
raise FailedStartupError.new(Time.now - start_time, e, server_logfile, last_lines)
|
365
|
-
end
|
366
|
-
# keep waiting
|
367
|
-
sleep 0.1
|
369
|
+
last_exception = e
|
368
370
|
end
|
371
|
+
|
372
|
+
$stderr.puts "TRYING..."
|
373
|
+
break if data && data.code && data.code.to_s == '200'
|
369
374
|
end
|
370
375
|
|
371
|
-
unless data.code.to_s == '200'
|
372
|
-
|
376
|
+
unless data && data.code && data.code.to_s == '200'
|
377
|
+
raise_startup_failed_error!(Time.now - start_time, last_exception || "'#{server_verify_url}' returned #{data.code.inspect}, not 200")
|
373
378
|
end
|
379
|
+
|
374
380
|
result = data.body.strip
|
375
381
|
|
376
382
|
unless result =~ /^Rails\s+version\s*:\s*(\d+\.\d+\.\d+)\s*\n+\s*Ruby\s+version\s*:\s*(\d+\..*?)\s*\n+\s*Ruby\s+engine:\s*(.*?)\s*\n?$/mi
|
377
|
-
|
383
|
+
raise_startup_failed_error!(Time.now - start_time, "'#{server_verify_url}' returned: #{result.inspect}")
|
378
384
|
end
|
379
385
|
actual_version = $1
|
380
386
|
ruby_version = $2
|