Skip to content

Commit 51f4994

Browse files
mishina2228PatrickTulskie
authored andcommitted
Raise an error when no available Rack server was found
1 parent d982d52 commit 51f4994

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

lib/resque/web_runner.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,8 @@ def setup_rack_handler
290290
next
291291
end
292292
end
293+
raise 'No available Rack handler (e.g. WEBrick, Thin, Puma, etc.) was found.' if handler.nil?
294+
293295
handler
294296

295297
# :server might be set explicitly to a single option like "mongrel"

test/resque-web_runner_test.rb

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,50 @@ def web_runner(*args)
8181
Resque::Server.set :server, false
8282
end
8383

84-
it 'sets the rack handler automaticaly' do
84+
it 'sets the rack handler automatically' do
8585
assert_equal @runner.rack_handler, Rack::Handler::WEBrick
8686
end
8787
end
8888

89+
describe 'with a sinatra app without an explicit server setting' do
90+
def web_runner(*args)
91+
Resque::WebRunner.any_instance.stubs(:daemonize!).once
92+
Rack::Handler::WEBrick.stubs(:run).once
93+
@runner = Resque::WebRunner.new(*args)
94+
end
95+
96+
before do
97+
Resque::Server.set :server, ["invalid", "webrick", "thin"]
98+
Rack::Handler::WEBrick.stubs(:run)
99+
web_runner("route", "--debug", skip_launch: true, sessions: true)
100+
end
101+
102+
after do
103+
Resque::Server.set :server, false
104+
end
105+
106+
it 'sets the first valid rack handler' do
107+
assert_equal @runner.rack_handler, Rack::Handler::WEBrick
108+
end
109+
end
110+
111+
describe 'with a sinatra app without available server settings' do
112+
before do
113+
Resque::Server.set :server, ["invalid"]
114+
end
115+
116+
after do
117+
Resque::Server.set :server, false
118+
end
119+
120+
it 'raises an error indicating that no available Rack handler was found' do
121+
err = assert_raises StandardError do
122+
Resque::WebRunner.new(skip_launch: true, sessions: true)
123+
end
124+
assert_match('No available Rack handler (e.g. WEBrick, Thin, Puma, etc.) was found.', err.message)
125+
end
126+
end
127+
89128
describe 'with a simple rack app' do
90129
before do
91130
web_runner(skip_launch: true, sessions: true)

0 commit comments

Comments
 (0)