jbuilder 2.2.12 → 2.2.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e20ebff9d84c8c417da4626184d5c0360d96039c
4
- data.tar.gz: 73e44d30685bdd6db5655c8cd3c6c6e5087f21e6
3
+ metadata.gz: 332d9c49a287b19d5b1afb7c64af39cbda9ccfc4
4
+ data.tar.gz: 332ccfb496127ea17c8f3def19a2fb28c2c8c17e
5
5
  SHA512:
6
- metadata.gz: 4447541e8d14944f440ff55d1bdc88a2b64a14aadcf43de76aaa1ae308e430ceadb25e9bd60707963655ef407b9b27b5f6eaa298bc5b800e6392736cee3d3847
7
- data.tar.gz: 87ec45135f3d1fb89f20cc51b51e9f62cf69b270af5ef55fe52e5706aac70da2799b4f5b71e584816e74a2727703a6471e3370e4589e81a79599727caa01db66
6
+ metadata.gz: 149866f11d9ae0814d83a40faa89380149516a50fef38829274092323b7ad74a5d2c05bce5443d8cb7a289e02b1307dd8b547530369d1127e338eadf3dbbcc9d
7
+ data.tar.gz: 3a6ce99d14c7ed4b67d29c0c6a1e840ef44074796ff3052de2e7148d31aa40ae106cbca923fb6b6f382cbb1cee41d36dba7bf048cd581eaa1e2bd9f1faad4c2a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ 2.2.13
4
+ ------
5
+
6
+ * Several peformance optimizations: [#260](https://github.com/rails/jbuilder/pull/260) & [#261](https://github.com/rails/jbuilder/pull/261)
7
+
3
8
  2.2.12
4
9
  ------
5
10
 
data/jbuilder.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'jbuilder'
3
- s.version = '2.2.12'
3
+ s.version = '2.2.13'
4
4
  s.authors = ['David Heinemeier Hansson', 'Pavel Pravosud']
5
5
  s.email = ['david@37signals.com', 'pavel@pravosud.com']
6
6
  s.summary = 'Create JSON structures via a Builder-style DSL'
data/lib/jbuilder.rb CHANGED
@@ -5,13 +5,13 @@ require 'jbuilder/errors'
5
5
  require 'multi_json'
6
6
 
7
7
  class Jbuilder
8
- @@key_formatter = KeyFormatter.new
8
+ @@key_formatter = nil
9
9
  @@ignore_nil = false
10
10
 
11
11
  def initialize(options = {})
12
12
  @attributes = {}
13
13
 
14
- @key_formatter = options.fetch(:key_formatter){ @@key_formatter.clone }
14
+ @key_formatter = options.fetch(:key_formatter){ @@key_formatter ? @@key_formatter.clone : nil}
15
15
  @ignore_nil = options.fetch(:ignore_nil, @@ignore_nil)
16
16
 
17
17
  yield self if ::Kernel.block_given?
@@ -207,9 +207,9 @@ class Jbuilder
207
207
  # json.(@person, :name, :age)
208
208
  def extract!(object, *attributes)
209
209
  if ::Hash === object
210
- _extract_hash_values(object, *attributes)
210
+ _extract_hash_values(object, attributes)
211
211
  else
212
- _extract_method_values(object, *attributes)
212
+ _extract_method_values(object, attributes)
213
213
  end
214
214
  end
215
215
 
@@ -245,11 +245,11 @@ class Jbuilder
245
245
 
246
246
  private
247
247
 
248
- def _extract_hash_values(object, *attributes)
248
+ def _extract_hash_values(object, attributes)
249
249
  attributes.each{ |key| _set_value key, object.fetch(key) }
250
250
  end
251
251
 
252
- def _extract_method_values(object, *attributes)
252
+ def _extract_method_values(object, attributes)
253
253
  attributes.each{ |key| _set_value key, object.public_send(key) }
254
254
  end
255
255
 
@@ -275,7 +275,7 @@ class Jbuilder
275
275
  end
276
276
 
277
277
  def _key(key)
278
- @key_formatter.format(key)
278
+ @key_formatter ? @key_formatter.format(key) : key.to_s
279
279
  end
280
280
 
281
281
  def _set_value(key, value)
@@ -51,6 +51,10 @@ end
51
51
 
52
52
 
53
53
  class JbuilderTest < ActiveSupport::TestCase
54
+ setup do
55
+ Jbuilder.send :class_variable_set, '@@key_formatter', Jbuilder::KeyFormatter.new
56
+ end
57
+
54
58
  test 'single key' do
55
59
  result = jbuild do |json|
56
60
  json.content 'hello'
@@ -564,12 +568,12 @@ class JbuilderTest < ActiveSupport::TestCase
564
568
  Jbuilder.key_format camelize: :lower
565
569
  result = jbuild{ |json| json.camel_style 'for JS' }
566
570
  assert_equal ['camelStyle'], result.keys
567
- Jbuilder.send :class_variable_set, '@@key_formatter', Jbuilder::KeyFormatter.new
568
571
  end
569
572
 
570
573
  test 'do not use default key formatter directly' do
571
574
  jbuild{ |json| json.key 'value' }
572
- cache = Jbuilder.send(:class_variable_get, '@@key_formatter').instance_variable_get('@cache')
575
+ formatter = Jbuilder.send(:class_variable_get, '@@key_formatter')
576
+ cache = formatter.instance_variable_get('@cache')
573
577
  assert_empty cache
574
578
  end
575
579
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.12
4
+ version: 2.2.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-20 00:00:00.000000000 Z
12
+ date: 2015-04-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.4.5
110
+ rubygems_version: 2.4.6
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Create JSON structures via a Builder-style DSL