Class: RailsTwirp::Base

Inherits:
AbstractController::Base
  • Object
show all
Includes:
AbstractController::AssetPaths, AbstractController::Caching, AbstractController::Callbacks, AbstractController::Logger, AbstractController::Rendering, ActionView::Rendering
Defined in:
lib/rails_twirp/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBase

Returns a new instance of Base.



13
14
15
16
17
18
# File 'lib/rails_twirp/base.rb', line 13

def initialize
  @_request = nil
  @_env = nil
  @_response_class = nil
  super
end

Class Method Details

.dispatch(action, request, response_class, env = {}) ⇒ Object



44
45
46
# File 'lib/rails_twirp/base.rb', line 44

def self.dispatch(action, request, response_class, env = {})
  new.dispatch(action, request, response_class, env)
end

Instance Method Details

#dispatch(action, request, response_class, env = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rails_twirp/base.rb', line 24

def dispatch(action, request, response_class, env = {})
  self.request = request
  self.env = env
  self.response_class = response_class

  http_request.controller_instance = self

  process(action)

  # Implicit render
  self.response_body = render unless response_body
  response_body
end

#http_requestObject



20
21
22
# File 'lib/rails_twirp/base.rb', line 20

def http_request
  @_http_request ||= ActionDispatch::Request.new(env[:rack_env])
end

#render(*args) ⇒ Object



38
39
40
41
42
# File 'lib/rails_twirp/base.rb', line 38

def render(*args)
  options = {formats: :pb, handlers: :pbbuilder, locals: {response_class: response_class}}
  options.deep_merge! args.extract_options!
  super(*args, options)
end