Skip to content

Commit 20a6756

Browse files
committed
Loosen deps.
1 parent ce02c53 commit 20a6756

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

jsonapi-rails.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
1414
spec.files = Dir['README.md', 'lib/**/*']
1515
spec.require_path = 'lib'
1616

17-
spec.add_dependency 'jsonapi-rb', '0.1.1'
17+
spec.add_dependency 'jsonapi-rb', '~> 0.1'
1818

1919
spec.add_development_dependency 'rails', '~> 5.0'
2020
spec.add_development_dependency 'sqlite3'

lib/jsonapi/rails/action_controller.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,19 @@
44
module JSONAPI
55
module Rails
66
module ActionController
7-
def self.included(base)
7+
REVERSE_MAPPING_KEY = 'jsonapi_deserializable.reverse_mapping'.freeze
8+
9+
def self.prepended(base)
810
base.class_eval do
911
extend ClassMethods
1012
end
1113
end
1214

15+
def render(options = {})
16+
reverse_mapping = request.env[REVERSE_MAPPING_KEY]
17+
super(options.merge(_reverse_mapping: reverse_mapping))
18+
end
19+
1320
module ClassMethods
1421
def deserializable_resource(key, options = {}, &block)
1522
_deserializable(key, options,
@@ -41,9 +48,10 @@ def initialize(app, key, klass)
4148
def call(env)
4249
request = Rack::Request.new(env)
4350
body = JSON.parse(request.body.read)
44-
deserialized_hash = @deserializable_class.call(body)
51+
deserializable = @deserializable_class.new(body)
52+
env[REVERSE_MAPPING_KEY] = deserializable.reverse_mapping
4553
(env[REQUEST_PARAMETERS_KEY] ||= {}).tap do |request_parameters|
46-
request_parameters[@deserializable_key] = deserialized_hash
54+
request_parameters[@deserializable_key] = deserializable.to_hash
4755
end
4856

4957
@app.call(env)

lib/jsonapi/rails/railtie.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Railtie < ::Rails::Railtie
1818
initializer 'jsonapi-rails.action_controller' do
1919
ActiveSupport.on_load(:action_controller) do
2020
require 'jsonapi/rails/action_controller'
21-
include ::JSONAPI::Rails::ActionController
21+
prepend ::JSONAPI::Rails::ActionController
2222

2323
Mime::Type.register MEDIA_TYPE, :jsonapi
2424

spec/dummy/app/controllers/tweets_controller.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ def show
2121
def create
2222
tweet = Tweet.new(create_params.merge(author: current_user))
2323

24+
p request.env['jsonapi_deserializable.reverse_mapping']
25+
2426
unless tweet.save
2527
render jsonapi_errors: tweet.errors
2628
return

0 commit comments

Comments
 (0)