lib/deas/runner.rb in deas-0.43.3 vs lib/deas/runner.rb in deas-0.43.4
- old
+ new
@@ -12,26 +12,26 @@
DEFAULT_CHARSET = 'utf-8'.freeze
DEFAULT_STATUS = 200.freeze
DEFAULT_BODY = [].freeze
attr_reader :handler_class, :handler
+ attr_reader :request, :route_path, :params
attr_reader :logger, :router, :template_source
- attr_reader :request, :params, :route_path
def initialize(handler_class, args = nil)
@status, @headers, @body = nil, Rack::Utils::HeaderHash.new, nil
+ @handler_class = handler_class
+ @handler = @handler_class.new(self)
+
args ||= {}
+ @request = args[:request]
+ @route_path = args[:route_path].to_s
+ @params = args[:params] || {}
@logger = args[:logger] || Deas::NullLogger.new
@router = args[:router] || Deas::Router.new
@template_source = args[:template_source] || Deas::NullTemplateSource.new
- @request = args[:request]
- @params = args[:params] || {}
- @route_path = args[:route_path].to_s
-
- @handler_class = handler_class
- @handler = @handler_class.new(self)
end
def splat
@splat ||= parse_splat_value
end
@@ -54,17 +54,27 @@
@headers
end
def body(value = nil)
if !value.nil?
+ # http://www.rubydoc.info/github/rack/rack/master/file/SPEC#The_Body
+ # "The Body must respond to each and must only yield String values"
# String#each is a thing in 1.8.7, so account for it here
- @body = !value.respond_to?(:each) || value.kind_of?(String) ? [*value] : value
+ @body = !value.respond_to?(:each) || value.kind_of?(String) ? [*value.to_s] : value
end
@body
end
def content_type(extname, params = nil)
self.headers['Content-Type'] = get_content_type(extname, params)
+ end
+
+ def set_cookie(name, value, opts = nil)
+ Rack::Utils.set_cookie_header!(
+ self.headers,
+ name,
+ (opts || {}).merge(:value => value)
+ )
end
def halt(*args)
self.status(args.shift) if args.first.instance_of?(::Fixnum)
self.headers(args.shift) if args.first.kind_of?(::Hash)