rabl 0.9.0.pre2 → 0.9.0.pre3

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
- NzJmMmM2ZjU0NWFmNGI3YmUzZGRiNmJlODhmYzQ2M2E2NTkwMDNiOA==
4
+ OWZkODhjODJlYzViMTk1Y2U1MTEyZjVhZjNjZmU3OWZlNjk3YTRmOA==
5
5
  data.tar.gz: !binary |-
6
- YWU5NWU4ZWMyNzc1MmFiNmVjYzNmOGZlOTE0ODk3NDY5YTQ2ODIxMA==
6
+ YjIwMzgzZjM4NGQ5Njk3NWJlZWQ0ZDY0ODNlNTZjY2UyODMzOWM2Yw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- MzJlM2ZkMmFmNDE3ZTU0YzY4NGQ1NTJkNDQzMDgxODZiNDI0OGRiMGMwZTg1
10
- ZTRhY2E3ZTQ2NDU2Yjk5OWRiZWVjZDY4OTA2NDkzODNhYWM3MzdiMTJiNjQw
11
- YzM3NzgyMGFiZjIxYjA0MzYyMDRlNjg3OTdjMmViYWFkMzhkZjM=
9
+ MjJiZDhjOTI4N2EwNTIyMTRkZDE5MTFlYTU2YjhlOTczOWJmYWViZjljMjY0
10
+ ZWU3ZTFkOGQwMjFjY2Y1ZjlkOWZjM2Q1ZjAyZTM0ZjM1Yzk3YmI4OThhYTFm
11
+ MWU5MjY0ODgxMzllNDEwZGM3OTY0NzNhNDE0OWE4ZThhZmE1NzQ=
12
12
  data.tar.gz: !binary |-
13
- Y2RjNDI0NjlkZDU0MjQxOWI4OTg2MGM3MDk3YmRhYTI3YjE3MzA3OGEzYjlh
14
- ZWEwNThjMzNmNmVkMGM4ZjhmNzE5MWIwYWFiMDc2ZTEwYzI0ZDk5NmFjODRl
15
- MzA1YTJkMjEyMTY1ZmZkZGUzNmNkM2YxNTE3MjRmMTFkMGFlOTM=
13
+ MmNhNjEyNDg2YjYzZGE0NWJmYzIyMjUxN2NkNDQ5NTBiZDZjOTlmZTA4NzRh
14
+ NDI3ZGE3NzliNzMxYmQ3M2RhYzgwMDc1ZTMzYzI4N2YxZDY1YTY1OWVhMzQ5
15
+ NTNmMmE3NTk4NWUyMGQ2YzQzYzJiMDg1YzY1MzliZDExNWI4NWY=
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.9.0.pre3 (Sept 22 2013)
4
+
5
+ * FIX #495 Digest cache when rendering from controller (Thanks @siong1987)
6
+
3
7
  ## 0.9.0.pre2 (Sept 02 2013)
4
8
 
5
9
  * FIX #142 Better resource resolution for AR Scopes
@@ -0,0 +1,4 @@
1
+ object @post
2
+ cache @post
3
+
4
+ attributes :title, :body
@@ -8,4 +8,9 @@ class PostsController < ApplicationController
8
8
  def show
9
9
  @post = Post.find(params[:id])
10
10
  end
11
+
12
+ def renderer
13
+ post = Post.find(params[:id])
14
+ render json: Rabl.render(post, 'posts/renderer', view_path: 'app/views', format: :json, scope: view_context)
15
+ end
11
16
  end
@@ -1,6 +1,10 @@
1
1
  Rails32::Application.routes.draw do
2
2
  resources :users
3
- resources :posts
3
+ resources :posts do
4
+ member do
5
+ get 'renderer'
6
+ end
7
+ end
4
8
  # The priority is based upon order of creation:
5
9
  # first created -> highest priority.
6
10
 
@@ -139,6 +139,18 @@ context "PostsController" do
139
139
  asserts("contains post attributes via node") { topic["post"] }.equals { [@post1.title, @post1.body] }
140
140
  end # show action, json
141
141
 
142
+ context "renderer" do
143
+ setup do
144
+ mock(ActionController::Base).perform_caching.any_number_of_times { true }
145
+ get "/posts/#{@post1.id}/renderer"
146
+ json_output['post']
147
+ end
148
+
149
+ # Attributes (regular)
150
+ asserts("contains post title") { topic['title'] }.equals { @post1.title }
151
+ asserts("contains post body") { topic['body'] }.equals { @post1.body }
152
+ end # renderer action, json
153
+
142
154
  context "for index action rendering JSON within HTML" do
143
155
  setup do
144
156
  get "/posts", format: :html
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
4
- gem 'rails', '4.0.0.rc1'
4
+ gem 'rails', '4.0.0'
5
5
 
6
6
  # Use sqlite3 as the database for Active Record
7
7
  gem 'sqlite3'
@@ -9,7 +9,7 @@ gem 'rabl', :path => File.expand_path(File.dirname(__FILE__) + "/../../")
9
9
  gem 'riot', :group => "test"
10
10
 
11
11
  # Use SCSS for stylesheets
12
- gem 'sass-rails', '~> 4.0.0.rc1'
12
+ gem 'sass-rails', '~> 4.0.0'
13
13
 
14
14
  # Use Uglifier as compressor for JavaScript assets
15
15
  gem 'uglifier', '>= 1.3.0'
@@ -8,4 +8,9 @@ class PostsController < ApplicationController
8
8
  def show
9
9
  @post = Post.find(params[:id])
10
10
  end
11
+
12
+ def renderer
13
+ post = Post.find(params[:id])
14
+ render json: Rabl.render(post, 'posts/renderer', view_path: 'app/views', format: :json, scope: view_context)
15
+ end
11
16
  end
@@ -1,6 +1,10 @@
1
1
  Rails4::Application.routes.draw do
2
2
  resources :users
3
- resources :posts
3
+ resources :posts do
4
+ member do
5
+ get 'renderer'
6
+ end
7
+ end
4
8
  # The priority is based upon order of creation: first created -> highest priority.
5
9
  # See how all your routes lay out with "rake routes".
6
10
 
@@ -139,6 +139,18 @@ context "PostsController" do
139
139
  asserts("contains post attributes via node") { topic["post"] }.equals { [@post1.title, @post1.body] }
140
140
  end # show action, json
141
141
 
142
+ context "renderer" do
143
+ setup do
144
+ mock(ActionController::Base).perform_caching.any_number_of_times { true }
145
+ get "/posts/#{@post1.id}/renderer"
146
+ json_output['post']
147
+ end
148
+
149
+ # Attributes (regular)
150
+ asserts("contains post title") { topic['title'] }.equals { @post1.title }
151
+ asserts("contains post body") { topic['body'] }.equals { @post1.body }
152
+ end # renderer action, json
153
+
142
154
  context "for index action rendering JSON within HTML" do
143
155
  setup do
144
156
  get "/posts", format: :html
data/lib/rabl/engine.rb CHANGED
@@ -287,17 +287,16 @@ module Rabl
287
287
  end
288
288
 
289
289
  def cache_key_with_digest(cache_key)
290
+ virtual_path = @_virtual_path ? @_virtual_path : @virtual_path
290
291
  Array(cache_key) + [
291
292
  @_options[:root_name],
292
293
  @_options[:format],
293
- Digestor.digest(@virtual_path, :rabl, lookup_context, dependencies: view_cache_dependencies)
294
+ Digestor.digest(virtual_path, :rabl, lookup_context, dependencies: view_cache_dependencies)
294
295
  ]
295
296
  end
296
297
 
297
298
  def cache_key_simple(key)
298
299
  Array(key) + [@_options[:root_name], @_options[:format]]
299
300
  end
300
-
301
-
302
301
  end
303
302
  end
data/lib/rabl/partials.rb CHANGED
@@ -43,6 +43,11 @@ module Rabl
43
43
  fetch_manual_template(view_paths, file)
44
44
  end
45
45
 
46
+ # being used by cache digestor
47
+ if defined?(Rails) && Rails.version =~ /^[4]/
48
+ @_virtual_path = file_path.gsub('app/views/', '').gsub('.rabl', '')
49
+ end
50
+
46
51
  unless File.exist?(file_path.to_s)
47
52
  raise "Cannot find rabl template '#{file}' within registered (#{view_paths.map(&:to_s).inspect}) view paths!"
48
53
  end
data/lib/rabl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rabl
2
- VERSION = "0.9.0.pre2"
2
+ VERSION = "0.9.0.pre3"
3
3
  end
data/rabl.gemspec CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.homepage = "https://github.com/nesquena/rabl"
12
12
  s.summary = %q{General ruby templating with json, bson, xml and msgpack support}
13
13
  s.description = %q{General ruby templating with json, bson, xml and msgpack support}
14
+ s.license = 'MIT'
14
15
 
15
16
  s.rubyforge_project = "rabl"
16
17
 
data/test/builder_test.rb CHANGED
@@ -129,6 +129,13 @@ context "Rabl::Builder" do
129
129
  mock(b).object_to_hash(@users, { :root => false, :child_root => false }).returns('xyz').subject
130
130
  b.build(@user)
131
131
  end.equivalent_to({ :users => 'xyz'})
132
+
133
+ asserts "that it generates with an collection and a specified object_root_name and root" do
134
+ ops = { :object_root => "person", :root => :people }
135
+ b = builder :child => [{ :data => @users, :options => ops, :block => lambda { |u| attribute :name } }], :child_root => true
136
+ mock(b).object_to_hash(@users, { :root => "person", :object_root_name => "person", :child_root => true }).returns('xyz').subject
137
+ b.build(@user)
138
+ end.equivalent_to({ :people => 'xyz'})
132
139
  end
133
140
 
134
141
  context "#glue" do
data/test/engine_test.rb CHANGED
@@ -329,7 +329,7 @@ context "Rabl::Engine" do
329
329
  template.render(scope)
330
330
  end.equals "{\"user\":{\"name\":\"leo\",\"users\":[{\"person\":{\"city\":\"UNO\"}},{\"person\":{\"city\":\"DOS\"}}]}}"
331
331
 
332
- asserts "it allows modification of both root labels for child collection" do
332
+ asserts "it allows modification of both labels for a child collection" do
333
333
  template = rabl %{
334
334
  object @user
335
335
  attribute :name
@@ -139,6 +139,18 @@ context "PostsController" do
139
139
  asserts("contains post attributes via node") { topic["post"] }.equals { [@post1.title, @post1.body] }
140
140
  end # show action, json
141
141
 
142
+ context "renderer" do
143
+ setup do
144
+ mock(ActionController::Base).perform_caching.any_number_of_times { true }
145
+ get "/posts/#{@post1.id}/renderer"
146
+ json_output['post']
147
+ end
148
+
149
+ # Attributes (regular)
150
+ asserts("contains post title") { topic['title'] }.equals { @post1.title }
151
+ asserts("contains post body") { topic['body'] }.equals { @post1.body }
152
+ end # renderer action, json
153
+
142
154
  context "for index action rendering JSON within HTML" do
143
155
  setup do
144
156
  get "/posts", format: :html
@@ -139,6 +139,18 @@ context "PostsController" do
139
139
  asserts("contains post attributes via node") { topic["post"] }.equals { [@post1.title, @post1.body] }
140
140
  end # show action, json
141
141
 
142
+ context "renderer" do
143
+ setup do
144
+ mock(ActionController::Base).perform_caching.any_number_of_times { true }
145
+ get "/posts/#{@post1.id}/renderer"
146
+ json_output['post']
147
+ end
148
+
149
+ # Attributes (regular)
150
+ asserts("contains post title") { topic['title'] }.equals { @post1.title }
151
+ asserts("contains post body") { topic['body'] }.equals { @post1.body }
152
+ end # renderer action, json
153
+
142
154
  context "for index action rendering JSON within HTML" do
143
155
  setup do
144
156
  get "/posts", format: :html
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.pre2
4
+ version: 0.9.0.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Esquenazi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-03 00:00:00.000000000 Z
11
+ date: 2013-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -177,6 +177,7 @@ files:
177
177
  - fixtures/ashared/views_rails_3/posts/date.rabl
178
178
  - fixtures/ashared/views_rails_3/posts/index.html.erb
179
179
  - fixtures/ashared/views_rails_3/posts/index.rabl
180
+ - fixtures/ashared/views_rails_3/posts/renderer.rabl
180
181
  - fixtures/ashared/views_rails_3/posts/show.html.erb
181
182
  - fixtures/ashared/views_rails_3/posts/show.rabl
182
183
  - fixtures/ashared/views_rails_3/posts/show.rabl_test_v1.rabl
@@ -445,7 +446,8 @@ files:
445
446
  - test/teststrap.rb
446
447
  - test/xml_test.rb
447
448
  homepage: https://github.com/nesquena/rabl
448
- licenses: []
449
+ licenses:
450
+ - MIT
449
451
  metadata: {}
450
452
  post_install_message:
451
453
  rdoc_options: []