def initialize(app, app_name, set_options = {}, runtime_args = ARGV, &block)
@options = set_options || {}
self.class.logger.level = options[:debug] ? Logger::DEBUG : Logger::INFO
@app = app
@app_name = app_name
@filesystem_friendly_app_name = @app_name.gsub(/\W+/, "_")
@quoted_app_name = "'#{app_name}'"
@runtime_args = runtime_args
@rack_handler = setup_rack_handler
@args = define_options do |opts|
if block_given?
opts.separator ''
opts.separator "#{quoted_app_name} options:"
yield(self, opts, app)
end
end
if @should_kill
kill!
exit!(0)
end
if (before_run = options.delete(:before_run)).respond_to?(:call)
before_run.call(self)
end
@host = options[:host] || HOST
if app.respond_to?(:set)
app.set(options)
app.set(:vegas, self)
end
FileUtils.mkdir_p(app_dir)
return if options[:start] == false
path = if options[:launch_path].respond_to?(:call)
options[:launch_path].call(self)
else
options[:launch_path]
end
start(path)
end