rabl 0.6.9 → 0.6.10
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.
- data/.travis.yml +2 -1
- data/CHANGELOG.md +5 -0
- data/README.md +21 -154
- data/lib/rabl/configuration.rb +7 -3
- data/lib/rabl/engine.rb +4 -2
- data/lib/rabl/renderer.rb +2 -1
- data/lib/rabl/version.rb +1 -1
- data/test/configuration_test.rb +4 -2
- data/test/engine_test.rb +8 -0
- data/test/renderer_test.rb +51 -12
- metadata +98 -141
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -37,19 +37,17 @@ and run `bundle install` to install the dependency.
|
|
37
37
|
If you are using **Rails 2.X, Rails 3.X or Padrino**, RABL works without configuration.
|
38
38
|
|
39
39
|
**Important:** With Padrino, be sure that **the rabl gem is listed after the padrino gem in your Gemfile**, otherwise
|
40
|
-
Rabl will not register as a template engine.
|
40
|
+
Rabl will not register properly as a template engine.
|
41
41
|
|
42
42
|
With Sinatra, or any other tilt-based framework, simply register:
|
43
43
|
|
44
|
-
|
44
|
+
```ruby
|
45
|
+
Rabl.register!
|
46
|
+
```
|
45
47
|
|
46
48
|
and RABL will be initialized and ready for use. For usage with Sinatra, check out
|
47
49
|
the [Sinatra Usage](https://github.com/nesquena/rabl/wiki/Setup-for-Sinatra) guide.
|
48
50
|
|
49
|
-
**Note:** Users have reported a few rendering issues with Rails 3.2.
|
50
|
-
The [template handler](https://github.com/nesquena/rabl/blob/master/lib/rabl/template.rb) probably needs
|
51
|
-
a patch to properly support Rails 3.2. Hopefully I can get to it soon but patches are welcome.
|
52
|
-
|
53
51
|
## Overview ##
|
54
52
|
|
55
53
|
You can use RABL to generate JSON and XML based APIs from any ruby object.
|
@@ -139,93 +137,10 @@ gem 'yajl-ruby', :require => "yajl"
|
|
139
137
|
|
140
138
|
and RABL will automatically start using that engine for encoding your JSON responses!
|
141
139
|
|
142
|
-
###
|
143
|
-
|
144
|
-
Rabl also includes optional support for [Message Pack](http://www.msgpack.org/) serialization format using the [msgpack gem](https://rubygems.org/gems/msgpack).
|
145
|
-
To enable, include the msgpack gem in your project's Gemfile. Then use Rabl as normal with the `msgpack` format (akin to json and xml formats).
|
146
|
-
|
147
|
-
```ruby
|
148
|
-
# Gemfile
|
149
|
-
gem 'msgpack', '~> 0.4.5'
|
150
|
-
```
|
151
|
-
|
152
|
-
One can additionally use a custom Message Pack implementation by setting the Rabl `msgpack_engine` configuration attribute. This custom message pack engine must conform to the MessagePack#pack method signature.
|
153
|
-
|
154
|
-
```ruby
|
155
|
-
class CustomEncodeEngine
|
156
|
-
def self.pack string
|
157
|
-
# Custom Encoding by your own engine.
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
Rabl.configure do |config|
|
162
|
-
config.msgpack_engine = CustomEncodeEngine
|
163
|
-
end
|
164
|
-
```
|
165
|
-
|
166
|
-
*NOTE*: Attempting to render the msgpack format without either including the msgpack gem
|
167
|
-
or setting a `msgpack_engine` will cause an exception to be raised.
|
168
|
-
|
169
|
-
### BSON ###
|
170
|
-
|
171
|
-
Rabl also includes optional support for [BSON](http://bsonspec.org/) serialization format using the [bson gem](https://rubygems.org/gems/bson).
|
172
|
-
To enable, include the bson gem in your project's Gemfile. Then use Rabl as normal with the `bson` format (akin to json and xml formats).
|
173
|
-
|
174
|
-
```ruby
|
175
|
-
# Gemfile
|
176
|
-
gem 'bson', '~> 1.5.2'
|
177
|
-
```
|
178
|
-
|
179
|
-
To use it with Rails, also register the bson mime type format:
|
180
|
-
|
181
|
-
```ruby
|
182
|
-
# config/initializers/mime_types.rb
|
183
|
-
Mime::Type.register "application/bson", :bson
|
184
|
-
```
|
185
|
-
|
186
|
-
One can additionally use a custom BSON implementation by setting the Rabl `bson_engine` configuration attribute.
|
187
|
-
This custom BSON engine must conform to the BSON#serialize method signature.
|
188
|
-
|
189
|
-
```ruby
|
190
|
-
class CustomEncodeEngine
|
191
|
-
def self.serialize string
|
192
|
-
# Custom Encoding by your own engine.
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
|
-
Rabl.configure do |config|
|
197
|
-
config.bson_engine = CustomEncodeEngine
|
198
|
-
end
|
199
|
-
```
|
200
|
-
|
201
|
-
*NOTE*: Attempting to render the bson format without either including the bson gem or
|
202
|
-
setting a `bson_engine` will cause an exception to be raised.
|
203
|
-
|
204
|
-
### Plist ###
|
205
|
-
|
206
|
-
Rabl also includes optional support for [Plist](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html]) serialization format using the [plist gem](http://plist.rubyforge.org/).
|
207
|
-
To enable, include the plist gem in your project's Gemfile. Then use Rabl as normal with the `plist` format (akin to other formats).
|
208
|
-
|
209
|
-
```ruby
|
210
|
-
# Gemfile
|
211
|
-
gem 'plist'
|
212
|
-
```
|
213
|
-
|
214
|
-
There is also an option for a custom Plist implementation by setting the Rabl `plist_engine` configuration attribute.
|
215
|
-
|
216
|
-
```ruby
|
217
|
-
class CustomEncodeEngine
|
218
|
-
def self.dump string
|
219
|
-
# Custom Encoding by your own engine.
|
220
|
-
end
|
221
|
-
end
|
222
|
-
|
223
|
-
Rabl.configure do |config|
|
224
|
-
config.plist_engine = CustomEncodeEngine
|
225
|
-
end
|
226
|
-
```
|
140
|
+
### Format Configuration ###
|
227
141
|
|
228
|
-
|
142
|
+
RABL supports configuration for MessagePack, BSON, and Plist. Check the
|
143
|
+
[Format Configuration](https://github.com/nesquena/rabl/wiki/Configuring-Formats) page for more details.
|
229
144
|
|
230
145
|
## Usage ##
|
231
146
|
|
@@ -465,10 +380,7 @@ Note that RABL can be nested arbitrarily deep within child nodes to allow for th
|
|
465
380
|
|
466
381
|
### Caching ###
|
467
382
|
|
468
|
-
|
469
|
-
Rails but support for other frameworks is planned in a future release.
|
470
|
-
|
471
|
-
For Rails, requires `action_controller.perform_caching` to be set to true in your environment, and for `cache` to be set to a key (object that responds to cache_key method, array or string).
|
383
|
+
RABL has built-in caching support for templates leveraging fragment caching strategies. Note that caching is currently **only available** for but support for other frameworks is planned in a future release. Simplest caching usage is:
|
472
384
|
|
473
385
|
```ruby
|
474
386
|
# app/views/users/show.json.rabl
|
@@ -477,62 +389,7 @@ cache @quiz # key = rabl/quiz/[cache_key]
|
|
477
389
|
attribute :title
|
478
390
|
```
|
479
391
|
|
480
|
-
|
481
|
-
|
482
|
-
```ruby
|
483
|
-
cache @user # calls @user.cache_key
|
484
|
-
cache ['keel', @user] # calls @user.cache_key and prefixes with kewl/
|
485
|
-
cache 'lists' # explicit key of 'lists'
|
486
|
-
cache 'lists', expires_in: 1.hour
|
487
|
-
```
|
488
|
-
|
489
|
-
The cache keyword can be used from within the base template or any extended template including partials.
|
490
|
-
|
491
|
-
```ruby
|
492
|
-
# app/views/users/index.json.rabl
|
493
|
-
collection @users
|
494
|
-
cache @users # key = rabl/users/[cache_key]/users/[cache_key]/...
|
495
|
-
|
496
|
-
extends "users/show"
|
497
|
-
```
|
498
|
-
|
499
|
-
And within the extended template:
|
500
|
-
|
501
|
-
```ruby
|
502
|
-
# app/views/users/show.json.rabl
|
503
|
-
object @user
|
504
|
-
cache @user # key = rabl/user/[cache_key]/...
|
505
|
-
|
506
|
-
attributes :name, :email
|
507
|
-
```
|
508
|
-
|
509
|
-
Another example of extending your object templates.
|
510
|
-
|
511
|
-
```ruby
|
512
|
-
# app/views/users/show.json.rabl
|
513
|
-
object @user
|
514
|
-
|
515
|
-
extends "users/user"
|
516
|
-
```
|
517
|
-
|
518
|
-
```ruby
|
519
|
-
# app/views/users/user.json.rabl
|
520
|
-
cache # key = rabl/user/[cache_key]/...
|
521
|
-
|
522
|
-
attributes :name, :email
|
523
|
-
```
|
524
|
-
|
525
|
-
Caching can significantly speed up the rendering of RABL templates in production and is strongly recommended when possible.
|
526
|
-
|
527
|
-
### Content Type Assignment ###
|
528
|
-
|
529
|
-
Currently in RABL, the content-type of your response is not set automatically. This is because RABL is intended
|
530
|
-
to work for any Rack-based framework and as agostic to format as possible.
|
531
|
-
Check [this issue](https://github.com/nesquena/rabl/issues/185#issuecomment-4501232) for more
|
532
|
-
details, and if you have any ideas or patches please let me know.
|
533
|
-
|
534
|
-
In the meantime, be sure to set the proper content-types if needed. This is usually pretty simple in both
|
535
|
-
Rails and Padrino. I recommend a before_filter on that controller or directly specified in an action.
|
392
|
+
Caching can significantly speed up the rendering of RABL templates in production and is strongly recommended when possible. For more a more detailed look at caching, check out the [Caching](https://github.com/nesquena/rabl/wiki/Caching-in-RABL) guide on the wiki.
|
536
393
|
|
537
394
|
### Rendering Templates Directly ###
|
538
395
|
|
@@ -554,6 +411,16 @@ Rabl::Renderer.xml(@post, 'posts/show')
|
|
554
411
|
|
555
412
|
These methods allow RABL to be used for arbitrary conversions of an object into a desired format.
|
556
413
|
|
414
|
+
### Content Type Headers ###
|
415
|
+
|
416
|
+
Currently in RABL, the content-type of your response is not set automatically. This is because RABL is intended
|
417
|
+
to work for any Rack-based framework and as agostic to format as possible.
|
418
|
+
Check [this issue](https://github.com/nesquena/rabl/issues/185#issuecomment-4501232) for more
|
419
|
+
details, and if you have any ideas or patches please let me know.
|
420
|
+
|
421
|
+
In the meantime, be sure to set the proper content-types if needed. This is usually pretty simple in both
|
422
|
+
Rails and Padrino. I recommend a before_filter on that controller or directly specified in an action.
|
423
|
+
|
557
424
|
## Resources ##
|
558
425
|
|
559
426
|
There are many resources available relating to RABL including the [RABL Wiki](https://github.com/nesquena/rabl/wiki),
|
@@ -563,6 +430,7 @@ and many tutorials and guides detailed below.
|
|
563
430
|
|
564
431
|
Links to resources for advanced usage:
|
565
432
|
|
433
|
+
* Grape Integration: https://github.com/nesquena/rabl/wiki/Using-Rabl-with-Grape
|
566
434
|
* Rendering JSON for a tree structure using RABL: https://github.com/nesquena/rabl/issues/70
|
567
435
|
* Layouts (erb, haml and rabl) in RABL: https://github.com/nesquena/rabl/wiki/Using-Layouts
|
568
436
|
* Backbone or [Ember.js](http://www.emberjs.com) Integration: https://github.com/nesquena/rabl/wiki/Backbone-Integration
|
@@ -588,9 +456,8 @@ Let me know if there's any other useful resources not listed here.
|
|
588
456
|
|
589
457
|
### Related Libraries ###
|
590
458
|
|
591
|
-
There are
|
459
|
+
There are other libraries that can either complement or extend the functionality of RABL:
|
592
460
|
|
593
|
-
* [grape-rabl](https://github.com/LTe/grape-rabl) - Allows rabl templates to be used with [grape](https://github.com/intridea/grape)
|
594
461
|
* [gon](https://github.com/gazay/gon) - Exposes your Rails variables in JS with RABL support integrated.
|
595
462
|
|
596
463
|
Let me know if there's any other related libraries not listed here.
|
data/lib/rabl/configuration.rb
CHANGED
@@ -61,7 +61,10 @@ module Rabl
|
|
61
61
|
# or class that responds to `encode`, to use to encode Rabl templates
|
62
62
|
# into JSON. For more details, see the MultiJson gem.
|
63
63
|
def json_engine=(engine_name_or_class)
|
64
|
-
|
64
|
+
@engine_name = engine_name_or_class
|
65
|
+
# multi_json compatibility TODO
|
66
|
+
MultiJson.respond_to?(:use) ? MultiJson.use(@engine_name) :
|
67
|
+
MultiJson.engine = @engine_name
|
65
68
|
end
|
66
69
|
|
67
70
|
# @return The JSON engine used to encode Rabl templates into JSON
|
@@ -104,8 +107,9 @@ module Rabl
|
|
104
107
|
def get_json_engine
|
105
108
|
if !defined?(@engine_name) && defined?(Rails)
|
106
109
|
ActiveSupport::JSON
|
107
|
-
else
|
108
|
-
|
110
|
+
else # use multi_json
|
111
|
+
# multi_json compatibility TODO
|
112
|
+
MultiJson.respond_to?(:adapter) ? MultiJson.adapter : MultiJson.engine
|
109
113
|
end
|
110
114
|
end
|
111
115
|
end
|
data/lib/rabl/engine.rb
CHANGED
@@ -118,7 +118,7 @@ module Rabl
|
|
118
118
|
@_collection_name = options[:root] if options[:root]
|
119
119
|
@_collection_name ||= data.values.first if data.respond_to?(:each_pair)
|
120
120
|
@_object_root_name = options[:object_root] if options.has_key?(:object_root)
|
121
|
-
self.object(data_object(data).to_a)
|
121
|
+
self.object(data_object(data).to_a)
|
122
122
|
end
|
123
123
|
|
124
124
|
# Sets the cache key to be used by ActiveSupport::Cache.expand_cache_key
|
@@ -211,7 +211,9 @@ module Rabl
|
|
211
211
|
# format_json({ :foo => "bar" }) => "test({ foo : 'bar' })"
|
212
212
|
# format_json("{ foo : "bar" }") => "test({ foo : 'bar' })"
|
213
213
|
def format_json(json_output)
|
214
|
-
|
214
|
+
json_engine = Rabl.configuration.json_engine
|
215
|
+
json_method = json_engine.respond_to?(:dump) ? 'dump' : 'encode' # multi_json compatibility TODO
|
216
|
+
json_output = json_engine.send(json_method, json_output) unless json_output.is_a?(String)
|
215
217
|
use_callback = Rabl.configuration.enable_json_callbacks && request_params[:callback].present?
|
216
218
|
use_callback ? "#{request_params[:callback]}(#{json_output})" : json_output
|
217
219
|
end
|
data/lib/rabl/renderer.rb
CHANGED
@@ -44,7 +44,8 @@ module Rabl
|
|
44
44
|
def render(context_scope = nil)
|
45
45
|
context_scope = context_scope ? context_scope : options.delete(:scope) || self
|
46
46
|
set_instance_variable(object) if context_scope == self
|
47
|
-
|
47
|
+
locals = options.fetch(:locals, {}).reverse_merge(:object => object)
|
48
|
+
engine.render(context_scope, locals)
|
48
49
|
end
|
49
50
|
|
50
51
|
protected
|
data/lib/rabl/version.rb
CHANGED
data/test/configuration_test.rb
CHANGED
@@ -3,12 +3,14 @@ require File.expand_path('../../lib/rabl', __FILE__)
|
|
3
3
|
|
4
4
|
context 'Rabl::Configuration' do
|
5
5
|
context 'defaults' do
|
6
|
+
# multi_json compatibility TODO
|
7
|
+
helper(:json_engine) { MultiJson.respond_to?(:adapter) ? MultiJson.adapter : MultiJson.engine }
|
6
8
|
setup { Rabl.configuration }
|
7
9
|
|
8
10
|
asserts(:include_json_root).equals true
|
9
11
|
asserts(:include_xml_root).equals false
|
10
12
|
asserts(:enable_json_callbacks).equals false
|
11
|
-
asserts(:json_engine).equals
|
13
|
+
asserts(:json_engine).equals { json_engine }
|
12
14
|
end
|
13
15
|
|
14
16
|
context 'custom JSON engine' do
|
@@ -18,6 +20,6 @@ context 'Rabl::Configuration' do
|
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
21
|
-
asserts('uses a custom JSON engine') { topic.json_engine
|
23
|
+
asserts('uses a custom JSON engine') { topic.json_engine.to_s =~ /MultiJson.*::Yajl/ }
|
22
24
|
end
|
23
25
|
end
|
data/test/engine_test.rb
CHANGED
@@ -111,6 +111,14 @@ context "Rabl::Engine" do
|
|
111
111
|
end
|
112
112
|
|
113
113
|
context "#collection" do
|
114
|
+
asserts "that it sets object to be blank array" do
|
115
|
+
template = rabl %{
|
116
|
+
collection []
|
117
|
+
}
|
118
|
+
scope = Object.new
|
119
|
+
template.render(scope)
|
120
|
+
end.equals "[]"
|
121
|
+
|
114
122
|
asserts "that it sets object to be casted as a simple array" do
|
115
123
|
template = rabl %{
|
116
124
|
collection @users
|
data/test/renderer_test.rb
CHANGED
@@ -4,6 +4,19 @@ require 'pathname'
|
|
4
4
|
context "Rabl::Renderer" do
|
5
5
|
helper(:tmp_path) { @tmp_path ||= Pathname.new(Dir.mktmpdir) }
|
6
6
|
context "#render" do
|
7
|
+
asserts 'renders empty array' do
|
8
|
+
source = %q{
|
9
|
+
collection @users
|
10
|
+
attribute :name, :as => 'city'
|
11
|
+
}
|
12
|
+
|
13
|
+
scope = Object.new
|
14
|
+
scope.instance_variable_set :@users, []
|
15
|
+
|
16
|
+
renderer = Rabl::Renderer.new(source, [], { :format => 'json', :root => true, :view_path => '/path/to/views', :scope => scope })
|
17
|
+
renderer.render
|
18
|
+
end.equals "[]"
|
19
|
+
|
7
20
|
asserts 'renders string as source' do
|
8
21
|
source = %q{
|
9
22
|
object @user
|
@@ -51,8 +64,8 @@ context "Rabl::Renderer" do
|
|
51
64
|
user = User.new(:name => 'irvine')
|
52
65
|
|
53
66
|
renderer = Rabl::Renderer.new(source, nil, { :format => 'json', :locals => {:object => user} })
|
54
|
-
renderer.render
|
55
|
-
end.equals "{\"user\":{\"city\":\"irvine\"}}"
|
67
|
+
renderer.render.split("").sort
|
68
|
+
end.equals "{\"user\":{\"city\":\"irvine\"}}".split("").sort
|
56
69
|
|
57
70
|
|
58
71
|
asserts 'loads source from file' do
|
@@ -66,8 +79,8 @@ context "Rabl::Renderer" do
|
|
66
79
|
user = User.new(:name => 'irvine')
|
67
80
|
|
68
81
|
renderer = Rabl::Renderer.new('test', user, :view_path => tmp_path)
|
69
|
-
renderer.render
|
70
|
-
end.equals "{\"user\":{\"age\":24,\"name\":\"irvine\"}}"
|
82
|
+
renderer.render.split("").sort
|
83
|
+
end.equals "{\"user\":{\"age\":24,\"name\":\"irvine\"}}".split("").sort
|
71
84
|
|
72
85
|
|
73
86
|
asserts 'handles paths for extends' do
|
@@ -88,8 +101,8 @@ context "Rabl::Renderer" do
|
|
88
101
|
user = User.new(:name => 'irvine')
|
89
102
|
|
90
103
|
renderer = Rabl::Renderer.new('user', user, :view_path => tmp_path)
|
91
|
-
renderer.render
|
92
|
-
end.equals "{\"user\":{\"age\":24,\"name\":\"irvine\"}}"
|
104
|
+
renderer.render.split("").sort
|
105
|
+
end.equals "{\"user\":{\"age\":24,\"name\":\"irvine\"}}".split("").sort
|
93
106
|
|
94
107
|
asserts 'Rabl.render calls Renderer' do
|
95
108
|
File.open(tmp_path + "test.json.rabl", "w") do |f|
|
@@ -101,8 +114,34 @@ context "Rabl::Renderer" do
|
|
101
114
|
|
102
115
|
user = User.new(:name => 'irvine')
|
103
116
|
|
104
|
-
Rabl.render(user, 'test', :view_path => tmp_path)
|
105
|
-
end.equals "{\"user\":{\"age\":24,\"name\":\"irvine\"}}"
|
117
|
+
Rabl.render(user, 'test', :view_path => tmp_path).split("").sort
|
118
|
+
end.equals "{\"user\":{\"age\":24,\"name\":\"irvine\"}}".split("").sort
|
119
|
+
|
120
|
+
asserts 'it renders collections' do
|
121
|
+
File.open(tmp_path + "test.json.rabl", "w") do |f|
|
122
|
+
f.puts %q{
|
123
|
+
collection @users => :users
|
124
|
+
attributes :age, :name
|
125
|
+
}
|
126
|
+
end
|
127
|
+
|
128
|
+
scope = Object.new
|
129
|
+
scope.instance_variable_set :@users, nil
|
130
|
+
Rabl.render([], 'test', :view_path => tmp_path, :scope => scope).split("").sort
|
131
|
+
end.equals "{\"users\":[]}".split("").sort
|
132
|
+
|
133
|
+
asserts 'it renders an array when given an empty collection' do
|
134
|
+
File.open(tmp_path + "test.json.rabl", "w") do |f|
|
135
|
+
f.puts %q{
|
136
|
+
collection @users
|
137
|
+
attribute :name, :age
|
138
|
+
}
|
139
|
+
end
|
140
|
+
|
141
|
+
scope = Object.new
|
142
|
+
scope.instance_variable_set :@users, nil
|
143
|
+
Rabl.render([], 'test', :view_path => tmp_path, :root => false, :scope => scope)
|
144
|
+
end.equals "[]"
|
106
145
|
end
|
107
146
|
|
108
147
|
context '.json' do
|
@@ -115,8 +154,8 @@ context "Rabl::Renderer" do
|
|
115
154
|
end
|
116
155
|
|
117
156
|
user = User.new(:name => 'ivan')
|
118
|
-
Rabl::Renderer.json(user, 'test', :view_path => tmp_path)
|
119
|
-
end.equals "{\"user\":{\"age\":24,\"name\":\"ivan\"}}"
|
157
|
+
Rabl::Renderer.json(user, 'test', :view_path => tmp_path).split("").sort
|
158
|
+
end.equals "{\"user\":{\"age\":24,\"name\":\"ivan\"}}".split("").sort
|
120
159
|
end
|
121
160
|
|
122
161
|
context '.msgpack' do
|
@@ -129,8 +168,8 @@ context "Rabl::Renderer" do
|
|
129
168
|
end
|
130
169
|
|
131
170
|
user = User.new(:name => 'ivan')
|
132
|
-
Rabl::Renderer.msgpack(user, 'test', :view_path => tmp_path).split
|
133
|
-
end.equals "\x81\xA4user\x82\xA3age\x18\xA4name\xA4ivan".split
|
171
|
+
Rabl::Renderer.msgpack(user, 'test', :view_path => tmp_path).split("").sort
|
172
|
+
end.equals "\x81\xA4user\x82\xA3age\x18\xA4name\xA4ivan".split("").sort
|
134
173
|
end
|
135
174
|
|
136
175
|
context '.plist' do
|
metadata
CHANGED
@@ -1,183 +1,137 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rabl
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.9
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
5
|
+
version: 0.6.10
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Nathan Esquenazi
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
|
13
|
+
date: 2012-04-19 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
15
16
|
name: activesupport
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ! '>='
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 2.3.14
|
22
|
-
type: :runtime
|
23
17
|
prerelease: false
|
24
|
-
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
19
|
none: false
|
26
|
-
requirements:
|
27
|
-
- -
|
28
|
-
- !ruby/object:Gem::Version
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
29
23
|
version: 2.3.14
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: multi_json
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ~>
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '1.0'
|
38
24
|
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: multi_json
|
39
28
|
prerelease: false
|
40
|
-
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
30
|
none: false
|
42
|
-
requirements:
|
31
|
+
requirements:
|
43
32
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version:
|
46
|
-
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "1.0"
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
47
38
|
name: riot
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: 0.12.3
|
54
|
-
type: :development
|
55
39
|
prerelease: false
|
56
|
-
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
41
|
none: false
|
58
|
-
requirements:
|
42
|
+
requirements:
|
59
43
|
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
44
|
+
- !ruby/object:Gem::Version
|
61
45
|
version: 0.12.3
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: rr
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 1.0.2
|
70
46
|
type: :development
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rr
|
71
50
|
prerelease: false
|
72
|
-
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
52
|
none: false
|
74
|
-
requirements:
|
53
|
+
requirements:
|
75
54
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
55
|
+
- !ruby/object:Gem::Version
|
77
56
|
version: 1.0.2
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rake
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
57
|
type: :development
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rake
|
87
61
|
prerelease: false
|
88
|
-
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
63
|
none: false
|
90
|
-
requirements:
|
91
|
-
- -
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version:
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: tilt
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
|
-
requirements:
|
99
|
-
- - ! '>='
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
version: '0'
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
102
68
|
type: :development
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: tilt
|
103
72
|
prerelease: false
|
104
|
-
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: yajl-ruby
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
113
74
|
none: false
|
114
|
-
requirements:
|
115
|
-
- -
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version:
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
118
79
|
type: :development
|
80
|
+
version_requirements: *id006
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: yajl-ruby
|
119
83
|
prerelease: false
|
120
|
-
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: msgpack
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
129
85
|
none: false
|
130
|
-
requirements:
|
131
|
-
- -
|
132
|
-
- !ruby/object:Gem::Version
|
133
|
-
version: 0
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: "0"
|
134
90
|
type: :development
|
91
|
+
version_requirements: *id007
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: msgpack
|
135
94
|
prerelease: false
|
136
|
-
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
137
96
|
none: false
|
138
|
-
requirements:
|
97
|
+
requirements:
|
139
98
|
- - ~>
|
140
|
-
- !ruby/object:Gem::Version
|
99
|
+
- !ruby/object:Gem::Version
|
141
100
|
version: 0.4.5
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: bson
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ~>
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: 1.5.2
|
150
101
|
type: :development
|
102
|
+
version_requirements: *id008
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: bson
|
151
105
|
prerelease: false
|
152
|
-
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
153
107
|
none: false
|
154
|
-
requirements:
|
108
|
+
requirements:
|
155
109
|
- - ~>
|
156
|
-
- !ruby/object:Gem::Version
|
110
|
+
- !ruby/object:Gem::Version
|
157
111
|
version: 1.5.2
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
|
-
name: plist
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
|
-
requirements:
|
163
|
-
- - ! '>='
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '0'
|
166
112
|
type: :development
|
113
|
+
version_requirements: *id009
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: plist
|
167
116
|
prerelease: false
|
168
|
-
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
169
118
|
none: false
|
170
|
-
requirements:
|
171
|
-
- -
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version:
|
119
|
+
requirements:
|
120
|
+
- - ">="
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: "0"
|
123
|
+
type: :development
|
124
|
+
version_requirements: *id010
|
174
125
|
description: General ruby templating with json, bson, xml and msgpack support
|
175
|
-
email:
|
126
|
+
email:
|
176
127
|
- nesquena@gmail.com
|
177
128
|
executables: []
|
129
|
+
|
178
130
|
extensions: []
|
131
|
+
|
179
132
|
extra_rdoc_files: []
|
180
|
-
|
133
|
+
|
134
|
+
files:
|
181
135
|
- .gitignore
|
182
136
|
- .travis.yml
|
183
137
|
- CHANGELOG.md
|
@@ -418,29 +372,32 @@ files:
|
|
418
372
|
- test/teststrap.rb
|
419
373
|
homepage: https://github.com/nesquena/rabl
|
420
374
|
licenses: []
|
375
|
+
|
421
376
|
post_install_message:
|
422
377
|
rdoc_options: []
|
423
|
-
|
378
|
+
|
379
|
+
require_paths:
|
424
380
|
- lib
|
425
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
381
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
426
382
|
none: false
|
427
|
-
requirements:
|
428
|
-
- -
|
429
|
-
- !ruby/object:Gem::Version
|
430
|
-
version:
|
431
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
383
|
+
requirements:
|
384
|
+
- - ">="
|
385
|
+
- !ruby/object:Gem::Version
|
386
|
+
version: "0"
|
387
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
432
388
|
none: false
|
433
|
-
requirements:
|
434
|
-
- -
|
435
|
-
- !ruby/object:Gem::Version
|
436
|
-
version:
|
389
|
+
requirements:
|
390
|
+
- - ">="
|
391
|
+
- !ruby/object:Gem::Version
|
392
|
+
version: "0"
|
437
393
|
requirements: []
|
394
|
+
|
438
395
|
rubyforge_project: rabl
|
439
|
-
rubygems_version: 1.8.
|
396
|
+
rubygems_version: 1.8.19
|
440
397
|
signing_key:
|
441
398
|
specification_version: 3
|
442
399
|
summary: General ruby templating with json, bson, xml and msgpack support
|
443
|
-
test_files:
|
400
|
+
test_files:
|
444
401
|
- test/bson_engine_test.rb
|
445
402
|
- test/builder_test.rb
|
446
403
|
- test/configuration_test.rb
|