Skip to content

Commit

Permalink
Enable passing custom options to rack handler
Browse files Browse the repository at this point in the history
  • Loading branch information
wojtekmach committed Jun 11, 2012
1 parent 4df8b4c commit b73b4b6
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
10 changes: 5 additions & 5 deletions lib/shamrock/service.rb
Expand Up @@ -11,18 +11,18 @@ class Service
def initialize(rack_app, options = {})
@rack_app = rack_app

options = DEFAULT_OPTIONS.merge(options)
@options = DEFAULT_OPTIONS.merge(options)

@handler = options[:handler]
@handler = @options.delete(:handler)

@port = options[:port] || find_available_port
@port = @options.delete(:port) || find_available_port
@url = "http://localhost:#{port}"
@monitor = options[:monitor].new(Http.new(url))
@monitor = @options.delete(:monitor).new(Http.new(url))
end

def start
@thread = Thread.new do
@handler.run(@rack_app, Port: port)
@handler.run(@rack_app, @options.merge(Port: port))
end

@monitor.wait_until_ready
Expand Down
10 changes: 10 additions & 0 deletions spec/shamrock/service_spec.rb
Expand Up @@ -28,6 +28,16 @@
service.start
end

it "should start the server with custom handler options" do
monitor = mock('monitor', wait_until_ready: true)
monitor_class = mock('monitor class', new: monitor)

handler = mock('handler')
service = Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class, foo: 'bar')
handler.should_receive(:run).with(@rack_app, Port: service.port, foo: 'bar')
service.start
end

it "should wait for the server to become available" do
monitor = mock('monitor')
monitor_class = mock('monitor class', new: monitor)
Expand Down

0 comments on commit b73b4b6

Please sign in to comment.