From fd15c93f7c3a4c8f6e11e7ff06bfc263e88f68f5 Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 15 Jul 2017 07:25:07 +0200 Subject: [PATCH] Add hook for default exposures. --- lib/jsonapi/rails/action_controller.rb | 6 ++++++ lib/jsonapi/rails/railtie.rb | 7 +++---- lib/jsonapi/rails/renderer.rb | 5 ----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/jsonapi/rails/action_controller.rb b/lib/jsonapi/rails/action_controller.rb index 67716bc..377cf6f 100644 --- a/lib/jsonapi/rails/action_controller.rb +++ b/lib/jsonapi/rails/action_controller.rb @@ -42,6 +42,12 @@ def deserializable_resource(key, options = {}, &block) end end + def jsonapi_expose + { + url_helpers: ::Rails.application.routes.url_helpers + } + end + def jsonapi_pagination(_collection) nil end diff --git a/lib/jsonapi/rails/railtie.rb b/lib/jsonapi/rails/railtie.rb index 4a46d65..5d3530c 100644 --- a/lib/jsonapi/rails/railtie.rb +++ b/lib/jsonapi/rails/railtie.rb @@ -30,18 +30,17 @@ class Railtie < ::Rails::Railtie ::ActionController::Renderers.add(:jsonapi) do |resources, options| self.content_type ||= Mime[:jsonapi] - # Renderer proc is evaluated in the controller context, so it - # has access to the jsonapi_pagination method. + # Renderer proc is evaluated in the controller context. if (pagination_links = jsonapi_pagination(resources)) (options[:links] ||= {}).merge!(pagination_links) end + options[:expose] = jsonapi_expose.merge!(options[:expose] || {}) RENDERERS[:jsonapi].render(resources, options).to_json end ::ActionController::Renderers.add(:jsonapi_error) do |errors, options| - # Renderer proc is evaluated in the controller context, so it - # has access to the jsonapi_pointers method. + # Renderer proc is evaluated in the controller context. options = options.merge(_jsonapi_pointers: jsonapi_pointers) self.content_type ||= Mime[:jsonapi] diff --git a/lib/jsonapi/rails/renderer.rb b/lib/jsonapi/rails/renderer.rb index 964d1ac..e5b11ef 100644 --- a/lib/jsonapi/rails/renderer.rb +++ b/lib/jsonapi/rails/renderer.rb @@ -11,11 +11,6 @@ def initialize(renderer = JSONAPI::Serializable::SuccessRenderer.new) def render(resources, options) opts = options.dup - # TODO(beauby): Move this to a global configuration. - default_exposures = { - url_helpers: ::Rails.application.routes.url_helpers - } - opts[:expose] = default_exposures.merge!(opts[:expose] || {}) opts[:jsonapi] = opts.delete(:jsonapi_object) @renderer.render(resources, opts)