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.