class Sliver::Rails::Action
Constants
- BODIED_METHODS
Public Class Methods
add_exposed_methods(name, options = {}, &block)
click to toggle source
# File lib/sliver/rails/action.rb, line 22 def self.add_exposed_methods(name, options = {}, &block) uncached_name = "#{name}_without_caching" define_method uncached_name, &block define_method(name) do @exposed_methods ||= {} @exposed_methods[name] ||= send uncached_name end return if options[:public] private uncached_name private name end
call(environment)
click to toggle source
Calls superclass method
# File lib/sliver/rails/action.rb, line 6 def self.call(environment) request = ::Rack::Request.new environment Rails.logger.info "Processing by #{name}" if request.params.any? Rails.logger.info " Parameters: #{request.params.inspect}" end super end
expose(name, options = {}, &block)
click to toggle source
# File lib/sliver/rails/action.rb, line 16 def self.expose(name, options = {}, &block) add_exposed_methods name, options, &block if block_given? locals << name end
locals()
click to toggle source
# File lib/sliver/rails/action.rb, line 37 def self.locals @locals ||= [] end
template()
click to toggle source
# File lib/sliver/rails/action.rb, line 41 def self.template @template end
use_template(template)
click to toggle source
# File lib/sliver/rails/action.rb, line 45 def self.use_template(template) @template = template end
Public Instance Methods
call()
click to toggle source
# File lib/sliver/rails/action.rb, line 49 def call # end
locals()
click to toggle source
# File lib/sliver/rails/action.rb, line 53 def locals self.class.locals.inject({}) do |hash, name| hash[name] = send name hash end end
Private Instance Methods
bodied_request?()
click to toggle source
# File lib/sliver/rails/action.rb, line 62 def bodied_request? BODIED_METHODS.include? environment['REQUEST_METHOD'].downcase end
content_type_header()
click to toggle source
# File lib/sliver/rails/action.rb, line 66 def content_type_header environment['Content-Type'] || environment['HTTP_CONTENT_TYPE'] || environment['CONTENT_TYPE'] end
content_types()
click to toggle source
# File lib/sliver/rails/action.rb, line 72 def content_types content_type_header.split(/;\s?/) end
json_request?()
click to toggle source
# File lib/sliver/rails/action.rb, line 76 def json_request? content_types.include? 'application/json' end
params()
click to toggle source
# File lib/sliver/rails/action.rb, line 80 def params @params ||= ActionController::Parameters.new request_params end
request_params()
click to toggle source
# File lib/sliver/rails/action.rb, line 84 def request_params @request_params ||= if bodied_request? && json_request? JSON.parse(request.body.read) else request.params end end
set_response(status, body = nil)
click to toggle source
# File lib/sliver/rails/action.rb, line 92 def set_response(status, body = nil) response.status = status response.body = body unless body.nil? end