jbuilder 0.8.0 → 0.8.1

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.
Binary file
data/jbuilder.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'jbuilder'
3
- s.version = '0.8.0'
3
+ s.version = '0.8.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'
data/lib/jbuilder.rb CHANGED
@@ -3,7 +3,6 @@ require 'active_support/ordered_hash'
3
3
  require 'active_support/core_ext/array/access'
4
4
  require 'active_support/core_ext/enumerable'
5
5
  require 'active_support/core_ext/hash'
6
- require 'active_support/json'
7
6
  require 'active_support/cache'
8
7
  require 'multi_json'
9
8
 
@@ -24,12 +24,22 @@ class JbuilderTemplate < Jbuilder
24
24
  # json.extract! @person, :name, :age
25
25
  # end
26
26
  def cache!(key=nil, options={}, &block)
27
- cache_key = ::ActiveSupport::Cache.expand_cache_key(key.is_a?(::Hash) ? url_for(key).split("://").last : key, :jbuilder)
28
- value = ::Rails.cache.fetch(cache_key, options) do
27
+ options[:force] = true unless @context.controller.perform_caching
28
+ value = ::Rails.cache.fetch(_cache_key(key), options) do
29
29
  _scope { yield self }
30
30
  end
31
+
31
32
  _merge(value)
32
33
  end
34
+
35
+ protected
36
+ def _cache_key(key)
37
+ if @context.respond_to?(:fragment_name_with_digest)
38
+ @context.fragment_name_with_digest(key)
39
+ else
40
+ ::ActiveSupport::Cache.expand_cache_key(key.is_a?(::Hash) ? url_for(key).split("://").last : key, :jbuilder)
41
+ end
42
+ end
33
43
  end
34
44
 
35
45
  class JbuilderHandler
@@ -8,9 +8,11 @@ require 'jbuilder'
8
8
  module Rails
9
9
  class Cache
10
10
  def initialize
11
- @cache = {}
11
+ clear
12
12
  end
13
13
 
14
+ def clear; @cache = {}; end
15
+
14
16
  def write(k, v, opt={})
15
17
  @cache[k] = v
16
18
  end
@@ -78,32 +80,34 @@ class JbuilderTemplateTest < ActionView::TestCase
78
80
  end
79
81
 
80
82
  test "fragment caching a JSON object" do
81
- json = render_jbuilder <<-JBUILDER
83
+ self.controller.perform_caching = true
84
+ Rails.cache.clear
85
+ render_jbuilder <<-JBUILDER
82
86
  json.cache!("cachekey") do
83
87
  json.name "Cache"
84
88
  end
85
89
  JBUILDER
86
90
 
87
- Rails.cache.read("jbuilder/cachekey").tap do |parsed|
88
- assert_equal "Cache", parsed['name']
89
- end
90
- end
91
-
92
- test "fragment caching deserializes a JSON object" do
93
- Rails.cache.write("jbuilder/cachekey", {'name' => "Something"})
94
91
  json = render_jbuilder <<-JBUILDER
95
92
  json.cache!("cachekey") do
96
- json.name "Cache"
93
+ json.name "Miss"
97
94
  end
98
95
  JBUILDER
99
96
 
100
97
  MultiJson.load(json).tap do |parsed|
101
- assert_equal "Something", parsed['name']
98
+ assert_equal "Cache", parsed['name']
102
99
  end
103
100
  end
104
101
 
105
102
  test "fragment caching deserializes an array" do
106
- Rails.cache.write("jbuilder/cachekey", ["a", "b", "c"])
103
+ Rails.cache.clear
104
+ self.controller.perform_caching = true
105
+ render_jbuilder <<-JBUILDER
106
+ json.cache!("cachekey") do
107
+ json.array! ['a', 'b', 'c']
108
+ end
109
+ JBUILDER
110
+
107
111
  json = render_jbuilder <<-JBUILDER
108
112
  json.cache!("cachekey") do
109
113
  json.array! ['1', '2', '3']
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: 0.8.0
4
+ version: 0.8.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-26 00:00:00.000000000 Z
12
+ date: 2012-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &2152108040 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,12 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2152108040
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 3.0.0
25
30
  description:
26
31
  email: david@37signals.com
27
32
  executables: []
@@ -30,8 +35,7 @@ extra_rdoc_files: []
30
35
  files:
31
36
  - ./Gemfile
32
37
  - ./Gemfile.lock
33
- - ./jbuilder-0.6.0.gem
34
- - ./jbuilder-0.7.0.gem
38
+ - ./jbuilder-0.4.0.gem
35
39
  - ./jbuilder.gemspec
36
40
  - ./lib/jbuilder.rb
37
41
  - ./lib/jbuilder_template.rb
@@ -60,7 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
60
64
  version: '0'
61
65
  requirements: []
62
66
  rubyforge_project:
63
- rubygems_version: 1.8.7
67
+ rubygems_version: 1.8.23
64
68
  signing_key:
65
69
  specification_version: 3
66
70
  summary: Create JSON structures via a Builder-style DSL
data/jbuilder-0.6.0.gem DELETED
Binary file
data/jbuilder-0.7.0.gem DELETED
Binary file