Sha256: 9fd41489e126455fd86cd6ca063d3bcf85cd0cd72f52da5b9fe1998e7b973894
Contents?: true
Size: 1.79 KB
Versions: 1
Compression:
Stored size: 1.79 KB
Contents
module JsonapiCompliable class Railtie < ::Rails::Railtie initializer "jsonapi_compliable.require_activerecord_adapter" do config.after_initialize do |app| ActiveSupport.on_load(:active_record) do require 'jsonapi_compliable/adapters/active_record' end end end initializer 'jsonapi_compliable.init' do if Mime[:jsonapi].nil? # rails 4 Mime::Type.register('application/vnd.api+json', :jsonapi) end register_parameter_parser register_renderers end # from jsonapi-rails PARSER = lambda do |body| data = JSON.parse(body) hash = { _jsonapi: data } hash[:format] = :jsonapi hash.with_indifferent_access end 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 def register_renderers ActiveSupport.on_load(:action_controller) do ::ActionController::Renderers.add(:jsonapi) do |proxy, options| self.content_type ||= Mime[:jsonapi] opts = {} if respond_to?(:default_jsonapi_render_options) opts = default_jsonapi_render_options end proxy.to_jsonapi(options) end end ActiveSupport.on_load(:action_controller) do ::ActionController::Renderers.add(:jsonapi_errors) do |proxy, options| self.content_type ||= Mime[:jsonapi] validation = JsonapiErrorable::Serializers::Validation.new \ proxy.data, proxy.payload.relationships render \ json: { errors: validation.errors }, status: :unprocessable_entity end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jsonapi_compliable-1.0.alpha.2 | lib/jsonapi_compliable/railtie.rb |