class JSONAPI::Rails::Railtie

@private

Constants

MEDIA_TYPE
PARSER
RENDERERS

Private Instance Methods

register_mime_type() click to toggle source
# File lib/jsonapi/rails/railtie.rb, line 34
def register_mime_type
  Mime::Type.register(MEDIA_TYPE, :jsonapi)
end
register_parameter_parser() click to toggle source
# File lib/jsonapi/rails/railtie.rb, line 38
def register_parameter_parser
  if ::Rails::VERSION::MAJOR >= 5
    ActionDispatch::Request.parameter_parsers[:jsonapi] = PARSER
  else
    ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime[:jsonapi]] = PARSER
  end
end
register_renderers() click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/jsonapi/rails/railtie.rb, line 47
def register_renderers
  ActiveSupport.on_load(:action_controller) do
    RENDERERS.each do |name, renderer|
      ::ActionController::Renderers.add(name) do |resources, options|
        # Renderer proc is evaluated in the controller context.
        self.content_type ||= Mime[:jsonapi]

        ActiveSupport::Notifications.instrument('render.jsonapi-rails',
                                                resources: resources,
                                                options: options) do
          renderer.render(resources, options, self).to_json
        end
      end
    end
  end
end