lib/nitro/server.rb in nitro-0.21.2 vs lib/nitro/server.rb in nitro-0.22.0
- old
+ new
@@ -59,11 +59,11 @@
attr_accessor :options
# The access_log for this server, used by Webrick.
attr_accessor :access_log
-
+
def initialize(name = 'Nitro', options = {})
@name = name
@map = self.class.map.dup
@address, @port = self.class.address, self.class.port
@public_root = self.class.public_root
@@ -80,13 +80,13 @@
@dispatcher
end
# Start the server.
- def start(controller = nil)
- @map['/'] = controller if controller
- @dispatcher = Dispatcher.new(@map)
+ def start(options = {})
+ @map['/'] = options[:controller] if options[:controller]
+ @dispatcher = options[:dispatche] || Dispatcher.new(@map)
end
def root=(controller)
@map['/'] = controller
end
@@ -94,19 +94,34 @@
def root
Mounter.new(self)
end
# Helper method.
-
- def self.run(controller = nil)
+ #
+ # Available options:
+ #
+ # :dispatcher, :controller
+ #
+ # Altetnatively you can pass a single Controller class instead
+ # of the options hash.
+
+ def self.run(options = {})
+ unless options.is_a?(Hash)
+ options = { :controller => options }
+ end
+
runner = Runner.new
runner.setup_options
runner.setup_mode
runner.daemonize if runner.daemon
+
server = Server.new
- server.start(controller)
- runner.invoke(server)
+ server.start(options)
+
+ runner.invoke(server) unless $NITRO_NO_INVOKE
+
+ return server
end
# A Helper class used for CherryPy-style publishing.
class Mounter # :nodoc: all
@@ -121,11 +136,10 @@
else
Mounter.new(@parent, "#@base/#{sym}")
end
end
end
-
-
+
end
end
# Alias for the Server class.