class Skyline::AbstractAction
Constants
- AsyncResponse
Public Class Methods
call(env)
click to toggle source
# File lib/skyline/abstract_action.rb, line 16 def call(env) new(env).process end
new(env)
click to toggle source
# File lib/skyline/abstract_action.rb, line 21 def initialize(env) @env = env @finished = false @_state = :init end
Public Instance Methods
process()
click to toggle source
# File lib/skyline/abstract_action.rb, line 28 def process EM.next_tick { before_start } AsyncResponse end
Protected Instance Methods
build_headers()
click to toggle source
# File lib/skyline/abstract_action.rb, line 58 def build_headers status, headers = respond_to?(:respond_with, true) ? respond_with.dup : [200, {'Content-Type' => 'text/html'}] headers['Connection'] ||= 'keep-alive' [status, headers] end
continue()
click to toggle source
# File lib/skyline/abstract_action.rb, line 43 def continue init_async_body send_headers @_state = :started EM.next_tick { on_start } end
encode(string, encoding = 'UTF-8')
click to toggle source
# File lib/skyline/abstract_action.rb, line 39 def encode(string, encoding = 'UTF-8') string.respond_to?(:force_encoding) ? string.force_encoding(encoding) : string end
finish()
click to toggle source
# File lib/skyline/abstract_action.rb, line 77 def finish @_state = :finishing @body.succeed if is_finishable? ensure @_state = :finished @finished = true end
finished?()
click to toggle source
# File lib/skyline/abstract_action.rb, line 73 def finished? !!@finished end
halt(status, headers = {}, halt_body = '')
click to toggle source
# File lib/skyline/abstract_action.rb, line 89 def halt(status, headers = {}, halt_body = '') send_response(status, headers, [halt_body]) end
init_async_body()
click to toggle source
# File lib/skyline/abstract_action.rb, line 64 def init_async_body @body = Body.new if self.class.on_finish_callbacks.any? @body.callback { on_finish } @body.errback { on_finish } end end
is_finishable?()
click to toggle source
# File lib/skyline/abstract_action.rb, line 109 def is_finishable? !finished? && @body && !@body.closed? end
params()
click to toggle source
# File lib/skyline/abstract_action.rb, line 101 def params @params ||= request.params.update(route_params).symbolize_keys end
render(body, *args)
click to toggle source
# File lib/skyline/abstract_action.rb, line 35 def render(body, *args) @body.call(body) end
request()
click to toggle source
# File lib/skyline/abstract_action.rb, line 97 def request @request ||= Rack::Request.new(@env) end
route_params()
click to toggle source
# File lib/skyline/abstract_action.rb, line 105 def route_params @env['router.params'] || {} end
send_headers()
click to toggle source
# File lib/skyline/abstract_action.rb, line 51 def send_headers status, headers = build_headers send_initial_response(status, headers, @body) rescue StandardError, LoadError, SyntaxError => exception handle_exception(exception) end
send_initial_response(response_status, response_headers, response_body)
click to toggle source
# File lib/skyline/abstract_action.rb, line 85 def send_initial_response(response_status, response_headers, response_body) send_response(response_status, response_headers, response_body) end
send_response(response_status, response_headers, response_body)
click to toggle source
# File lib/skyline/abstract_action.rb, line 93 def send_response(response_status, response_headers, response_body) @env['async.callback'].call [response_status, response_headers, response_body] end