jbuilder 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NGYyYTk2NWM1ZjkxN2Q1YWYxNmM1MWI2YWZhZWFlODY4YWJiNjZjYw==
4
+ Njk5MjUxMDExMjc4YWZkZGY3ODM0MWFhY2FhYTE0MWUyNTE2YjdjNg==
5
5
  data.tar.gz: !binary |-
6
- ZGM3Mjg1NGYxODFjNGU4NGYwZWRkYmNkNTZmMjJjMmFjMzk3NTUxZA==
6
+ YjViMzY4ZmE2ZTVmNGVmZGNiZjM1N2JiOGZlN2NlNjgxYTA3YzIxNg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- OGFkMmYzYWM0MjQ5OWM5ZmU4ZjU1ODBhZmVkMzQ3ZjRjNjg0YmE2N2VmY2Rm
10
- M2YyNDIwY2FlZTNhMzBmNDk4MDljNGMxNWVkNzMwYTMyOTRiYTEwYzE2Mjc4
11
- NjE0ODZlZTU2MjczZjgxMDg5ZTVmZmIxZWQ0OGQ1NTI5M2FhNmQ=
9
+ YjRjMDgyNWI1OGU2ZGFjZGZiMWRjZmYyOWZkYzI2N2NhY2MzOWY1MjYwNjM4
10
+ ZGMzNzBlN2RlYjM0MWZhMjdlZGZhODJhZDIyYTA3MjQ0YjVhYjY2YTY2NjY5
11
+ MTA3N2RkZDE3NTRlOGQxMzIyZTQ0Mzg1M2NlNDNmYWQwYzY0NDI=
12
12
  data.tar.gz: !binary |-
13
- ODc3OGEwYTkxMGFlNTdhODdmOGEzYWM1YzZiYTEyOTk5MjFmZjM4M2I5ZTU1
14
- ZTU4Y2ViYTFhMTA1NzFmZGFlMTc5OTljYTk1OTA2MTk0MDVmOTVhZGYyMzZl
15
- Y2Y1ZTlmOWU0OTQ2NTY1MmY1ODQ2YmY2YjdiYTEwYTA2NTYwYmE=
13
+ YThmNWY1NDU5MmUwMTY0MTgzMDNlYWIyZDI2ODI4MWM2YTJkOWRjZjg1Yzky
14
+ YWRlYmUxZGVlZmVkMGQxMjJkZGMzNjlkNmIxNmMzYTA0NzVjYzgwNmY2ZDE5
15
+ NmY2NmIyNjI3ODJlN2EwMGVjNjhjYjM2YTMyMjIzZDhlNWZiMWU=
data/README.md CHANGED
@@ -86,7 +86,6 @@ json.array! @people, :id, :name
86
86
  # => [ { "id": 1, "name": "David" }, { "id": 2, "name": "Jamie" } ]
87
87
  ```
88
88
 
89
-
90
89
  Jbuilder objects can be directly nested inside each other. Useful for composing objects.
91
90
 
92
91
  ``` ruby
@@ -155,6 +154,10 @@ json.partial! 'posts/post', collection: @posts, as: :post
155
154
  # or
156
155
 
157
156
  json.partial! partial: 'posts/post', collection: @posts, as: :post
157
+
158
+ # or
159
+
160
+ json.comments @post.comments, partial: 'comment/comment', as: :comment
158
161
  ```
159
162
 
160
163
  You can explicitly make Jbuilder object return null if you want:
@@ -171,10 +174,18 @@ json.author do
171
174
  end
172
175
  ```
173
176
 
177
+ Fragment caching is supported, it uses `Rails.cache` and works like caching in HTML templates:
178
+
179
+ ```ruby
180
+ json.cache! ['v1', @person], expires_in: 10.minutes do
181
+ json.extract! @person, :name, :age
182
+ end
183
+ ```
184
+
174
185
  Keys can be auto formatted using `key_format!`, this can be used to convert keynames from the standard ruby_format to CamelCase:
175
186
 
176
187
  ``` ruby
177
- json.key_format! :camelize => :lower
188
+ json.key_format! camelize: :lower
178
189
  json.first_name 'David'
179
190
 
180
191
  # => { "firstName": "David" }
@@ -183,11 +194,12 @@ json.first_name 'David'
183
194
  You can set this globally with the class method `key_format` (from inside your environment.rb for example):
184
195
 
185
196
  ``` ruby
186
- Jbuilder.key_format :camelize => :lower
197
+ Jbuilder.key_format camelize: :lower
187
198
  ```
188
199
 
189
200
  Libraries similar to this in some form or another include:
190
201
 
202
+ * Active Model Serializers: https://github.com/rails-api/active_model_serializers
191
203
  * RABL: https://github.com/nesquena/rabl
192
204
  * JsonBuilder: https://github.com/nov/jsonbuilder
193
205
  * JSON Builder: https://github.com/dewski/json_builder
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'jbuilder'
3
- s.version = '1.5.0'
3
+ s.version = '1.5.1'
4
4
  s.author = 'David Heinemeier Hansson'
5
5
  s.email = 'david@37signals.com'
6
6
  s.summary = 'Create JSON structures via a Builder-style DSL'
@@ -1,6 +1,12 @@
1
1
  require 'action_dispatch/http/mime_type'
2
2
 
3
3
  class JbuilderTemplate < Jbuilder
4
+ class << self
5
+ attr_accessor :template_lookup_options
6
+ end
7
+
8
+ self.template_lookup_options = { :handlers => [:jbuilder] }
9
+
4
10
  def initialize(context, *args, &block)
5
11
  @context = context
6
12
  super(*args, &block)
@@ -54,7 +60,8 @@ class JbuilderTemplate < Jbuilder
54
60
 
55
61
  protected
56
62
  def _handle_partial_options(options)
57
- options.reverse_merge!(:locals => {}, :handlers => [:jbuilder])
63
+ options.reverse_merge! :locals => {}
64
+ options.reverse_merge! ::JbuilderTemplate.template_lookup_options
58
65
  collection = options.delete(:collection)
59
66
  as = options[:as]
60
67
 
@@ -52,8 +52,9 @@ class JbuilderTemplateTest < ActionView::TestCase
52
52
  end
53
53
  end
54
54
 
55
- def assert_collection_rendered(json)
55
+ def assert_collection_rendered(json, context = nil)
56
56
  result = MultiJson.load(json)
57
+ result = result.fetch(context) if context
57
58
 
58
59
  assert_equal 10, result.length
59
60
  assert_equal Array, result.class
@@ -125,6 +126,14 @@ class JbuilderTemplateTest < ActionView::TestCase
125
126
  assert_collection_rendered json
126
127
  end
127
128
 
129
+ test 'render array if partials as a value' do
130
+ json = render_jbuilder <<-JBUILDER
131
+ json.posts BLOG_POST_COLLECTION, :partial => 'blog_post', :as => :blog_post
132
+ JBUILDER
133
+
134
+ assert_collection_rendered json, 'posts'
135
+ end
136
+
128
137
  test 'fragment caching a JSON object' do
129
138
  undef_context_methods :fragment_name_with_digest, :cache_fragment_name
130
139
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-27 00:00:00.000000000 Z
11
+ date: 2013-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement