jsonapi-rails 0.1.1.beta2 → 0.1.1.beta3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a2187b8d1ba0e20c3d0e23745e04e2072b56e43a
4
- data.tar.gz: 6bb485f12b4d58a8132388faf76695cd503ddf94
3
+ metadata.gz: 3e7688f7537e54bd034bb90534c54b24a45b6609
4
+ data.tar.gz: 5ccdd0a8cec51bc47b4bf9975ee4b4ac4ac2679f
5
5
  SHA512:
6
- metadata.gz: 1ae73e72c786c2751afe9168eed6f5251ca9479bf45faca4594f08243cedca1e8aac8c59468258689601f32b228a71057d3510efb1851b664e8c14bf961da154
7
- data.tar.gz: 6490dcde60b48fab7e83bc14036575a5b7644ddba4b9aac4f1b80fd77a09443aa25318bd542ceeeec2b5c6ae34c81f575fd0ba41d4b1740afa7539fede4a7fce
6
+ metadata.gz: 473e402fc57f365aad748692290a4c4f675d6309e4b95f1d76426c40b5b6b48dce57417581463754184a3572b3ad50e1e02de24dafb4650d9db8c64d46494fee
7
+ data.tar.gz: 4d152fc21a5bfedbcb86c6504621230ae47e4a0ed8126bc03c056d3128b40a6ce2a709a5eb56e472dd1a10c66442fbb273582322954b3fcc9b2f2b0be5cbf701
data/README.md CHANGED
@@ -23,7 +23,78 @@ $ gem install jsonapi-rails
23
23
 
24
24
  ## Usage
25
25
 
26
- TODO
26
+ ### Serialization
27
+
28
+ Example:
29
+ ```ruby
30
+ # app/serializable/serializable_user.rb
31
+ class SerializableUser < JSONAPI::Serializable::Model
32
+ type 'users'
33
+
34
+ attribute :name
35
+ attribute :email do
36
+ "#{@model.name}@foo.bar"
37
+ end
38
+
39
+ has_many :posts do
40
+ # data is auto-inferred
41
+ link(:related) { @url_helpers.user_posts(@model) }
42
+ meta foo: :bar
43
+ end
44
+
45
+ has_many :comments do
46
+ data do
47
+ @user.comments.order(:desc)
48
+ end
49
+ end
50
+
51
+ has_many :reviews, Foo::Bar::SerializableRev
52
+
53
+ link(:self) { @url_helpers.user_url(@model.id) }
54
+ meta do
55
+ { foo: 'bar' }
56
+ end
57
+ end
58
+
59
+ # app/controllers/users_controller.rb
60
+ # ...
61
+ user = User.find_by(id: id)
62
+ render jsonapi: user, include: { posts: [:comments] }, meta: { foo: 'bar' }
63
+ # ...
64
+ ```
65
+
66
+ ### Deserialization
67
+
68
+ Example:
69
+ ```ruby
70
+ class PostsController < ActionController::Base
71
+ deserializable_resource :post, only: [:create, :update] do
72
+ attribute :title
73
+ attribute :date
74
+ has_one :author do |rel, id, type|
75
+ field user_id: id
76
+ field user_type: type
77
+ end
78
+ has_many :comments
79
+ end
80
+
81
+ def create_params
82
+ params.require(:user).permit!
83
+ end
84
+
85
+ def create
86
+ create_params[:title]
87
+ create_params[:date]
88
+ create_params[:comment_ids]
89
+ create_params[:comment_types]
90
+ create_params[:user_id]
91
+ create_params[:user_type]
92
+ # ...
93
+ end
94
+ end
95
+
96
+
97
+ ```
27
98
 
28
99
  ## License
29
100
 
@@ -1,6 +1,5 @@
1
1
  require 'rails/railtie'
2
2
  require 'action_controller'
3
- require 'action_controller/railtie'
4
3
  require 'active_support'
5
4
 
6
5
  require 'jsonapi/rails/parser'
@@ -12,35 +11,35 @@ module JSONAPI
12
11
  MEDIA_TYPE = 'application/vnd.api+json'.freeze
13
12
  PARSER = JSONAPI::Rails.parser
14
13
 
15
- initializer 'JSONAPI::Rails.initialize' do
16
- Mime::Type.register MEDIA_TYPE, :jsonapi
17
- if ::Rails::VERSION::MAJOR >= 5
18
- ActionDispatch::Request.parameter_parsers[:jsonapi] = PARSER
19
- else
20
- ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime[:jsonapi]] = PARSER
21
- end
14
+ initializer 'jsonapi-rails.action_controller' do
15
+ ActiveSupport.on_load(:action_controller) do
16
+ require 'jsonapi/rails/action_controller'
17
+ include ::JSONAPI::Rails::ActionController
22
18
 
23
- ActionController::Renderers.add :jsonapi do |json, options|
24
- unless json.is_a?(String)
25
- json = JSONAPI::Rails::Renderer.render(json, options)
19
+ Mime::Type.register MEDIA_TYPE, :jsonapi
20
+ if ::Rails::VERSION::MAJOR >= 5
21
+ ::ActionDispatch::Request.parameter_parsers[:jsonapi] = PARSER
22
+ else
23
+ ::ActionDispatch::ParamsParser::DEFAULT_PARSERS[Mime[:jsonapi]] = PARSER
24
+ end
25
+
26
+ ::ActionController::Renderers.add :jsonapi do |json, options|
27
+ unless json.is_a?(String)
28
+ json = JSONAPI::Rails::Renderer.render(json, options)
29
+ end
30
+ self.content_type ||= Mime[:jsonapi]
31
+ self.response_body = json
26
32
  end
27
- self.content_type ||= Mime[:jsonapi]
28
- self.response_body = json
29
- end
30
33
 
31
- ActionController::Renderers.add :jsonapi_errors do |json, options|
32
- unless json.is_a?(String)
33
- json = JSONAPI::Rails::ErrorRender.render_errors(json, options)
34
+ ::ActionController::Renderers.add :jsonapi_errors do |json, options|
35
+ unless json.is_a?(String)
36
+ json = JSONAPI::Rails::ErrorRender.render_errors(json, options)
37
+ end
38
+ self.content_type ||= Mime[:jsonapi]
39
+ self.response_body = json
34
40
  end
35
- self.content_type ||= Mime[:jsonapi]
36
- self.response_body = json
37
41
  end
38
42
  end
39
43
  end
40
44
  end
41
45
  end
42
-
43
- ActiveSupport.on_load(:action_controller) do
44
- require 'jsonapi/rails/action_controller'
45
- include JSONAPI::Rails::ActionController
46
- end
@@ -1,5 +1,4 @@
1
1
  require 'jsonapi/serializable/renderer'
2
- require 'jsonapi/serializable/resource_builder'
3
2
 
4
3
  module JSONAPI
5
4
  module Rails
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonapi-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1.beta2
4
+ version: 0.1.1.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Hosseini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-16 00:00:00.000000000 Z
11
+ date: 2016-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-renderer