rabl 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.
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.8.1
4
+
5
+ * Fix to respect @collection :root for xml output (Thanks @chinshr)
6
+
3
7
  ## 0.8.0
4
8
 
5
9
  * Remove multi_json dependency, simpler JSON handling
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in rabl.gemspec
4
4
  gemspec
@@ -23,5 +23,5 @@ group :test do
23
23
  end
24
24
 
25
25
  group :development, :test do
26
- gem 'debugger'
26
+ # gem 'debugger'
27
27
  end
data/README.md CHANGED
@@ -3,10 +3,11 @@
3
3
  [![Continuous Integration status](https://secure.travis-ci.org/nesquena/rabl.png)](http://travis-ci.org/nesquena/rabl)
4
4
  [![Dependency Status](https://gemnasium.com/nesquena/rabl.png)](https://gemnasium.com/nesquena/rabl)
5
5
 
6
- RABL (Ruby API Builder Language) is a Rails and [Padrino](http://padrinorb.com) ruby templating system for generating JSON, XML, MessagePack, PList and BSON. When using the ActiveRecord 'to_json' method, I tend to quickly find myself wanting a more expressive and powerful solution for generating APIs.
7
- This is especially frustrating when the JSON representation is complex or doesn't match the exact schema defined in the database.
6
+ RABL (Ruby API Builder Language) is a Rails and [Padrino](http://padrinorb.com) ruby templating system for generating JSON, XML, MessagePack, PList and BSON.
7
+ When using the ActiveRecord 'to_json' method, I find myself wanting a more expressive and powerful solution for generating APIs.
8
+ This is especially true when the JSON representation is complex or doesn't match the exact schema defined within the database.
8
9
 
9
- I wanted a simple and flexible system for generating my APIs. In particular, I wanted to easily:
10
+ In particular, I want to easily:
10
11
 
11
12
  * Create arbitrary nodes named based on combining data in an object
12
13
  * Pass arguments to methods and store the result as a child node
@@ -16,14 +17,15 @@ I wanted a simple and flexible system for generating my APIs. In particular, I w
16
17
  * Include nodes only if a certain condition has been met
17
18
 
18
19
  Anyone who has tried the 'to_json' method used in ActiveRecord for generating a JSON response has felt the pain of this restrictive approach.
19
- RABL is a general templating system created to solve these problems in an entirely new way.
20
+ RABL is a general templating system created to solve these problems by approaching API response generation in an entirely new way.
20
21
 
22
+ RABL at the core is all about adhering to MVC principles by deferring API data representations to the **view** layer of your application.
21
23
  For a breakdown of common misconceptions about RABL, please check out our guide to
22
- [understanding RABL](https://github.com/nesquena/rabl/wiki/Understanding-RABL) which can help clear up any confusion about this project.
24
+ [understanding RABL](https://github.com/nesquena/rabl/wiki/Understanding-RABL) which can help clear up any confusion about this project.
23
25
 
24
26
  ## Breaking Changes ##
25
27
 
26
- * v0.8.0 (released Feb 14, 2012) removes multi_json dependency and
28
+ * v0.8.0 (released Feb 14, 2013) removes multi_json dependency and
27
29
  relies on Oj (or JSON) as the json parser. Simplifies code, removes a dependency
28
30
  but you might want to remove any references to MultiJson.
29
31
 
@@ -541,7 +543,8 @@ the [RABL Wiki](https://github.com/nesquena/rabl/wiki) for other usages.
541
543
 
542
544
  Tutorials can always be helpful when first getting started:
543
545
 
544
- * [Railscasts #322](http://railscasts.com/episodes/322-rabl)
546
+ * [Railscasts #322](http://railscasts.com/episodes/322-rabl) - Ryan Bates explains RABL
547
+ * [BackboneRails](http://www.backbonerails.com/) - Great screencasts by Brian Mann
545
548
  * [Creating an API with RABL and Padrino](http://blog.crowdint.com/2012/10/22/rabl-with-padrino.html)
546
549
  * http://blog.joshsoftware.com/2011/12/23/designing-rails-api-using-rabl-and-devise/
547
550
  * http://engineering.gomiso.com/2011/06/27/building-a-platform-api-on-rails/
data/lib/rabl/engine.rb CHANGED
@@ -89,8 +89,9 @@ module Rabl
89
89
  include_root = Rabl.configuration.include_xml_root
90
90
  include_child_root = include_root && Rabl.configuration.include_child_root
91
91
  options = options.reverse_merge(:root => include_root, :child_root => include_child_root)
92
- xml_options = Rabl.configuration.default_xml_options.merge(:root => @_data_name)
93
- to_hash(options).to_xml(xml_options)
92
+ xml_options = Rabl.configuration.default_xml_options.merge(:root => collection_root_name || @_data_name)
93
+ result = to_hash(options)
94
+ result.to_xml(xml_options)
94
95
  end
95
96
 
96
97
  # Returns a bson representation of the data object
data/lib/rabl/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rabl
2
- VERSION = "0.8.0"
2
+ VERSION = "0.8.1"
3
3
  end
data/test/xml_test.rb CHANGED
@@ -50,12 +50,12 @@ context "Rabl::Engine" do
50
50
 
51
51
  asserts "that it sets root node for objects" do
52
52
  template = rabl %{
53
- collection @users => :person
53
+ collection @users => :smors
54
54
  }
55
55
  scope = Object.new
56
56
  scope.instance_variable_set :@users, [User.new, User.new]
57
57
  template.render(scope)
58
- end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<people type=\"array\">\n <person>\n </person>\n <person>\n </person>\n</people>\n"
58
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<smors type=\"array\">\n <smor>\n </smor>\n <smor>\n </smor>\n</smors>\n"
59
59
  end
60
60
 
61
61
  context "#attribute" do
@@ -187,12 +187,22 @@ context "Rabl::Engine" do
187
187
 
188
188
  asserts "that it sets root node for objects" do
189
189
  template = rabl %{
190
- collection @users => :person
190
+ collection @users => :people
191
191
  }
192
192
  scope = Object.new
193
193
  scope.instance_variable_set :@users, [User.new, User.new]
194
194
  template.render(scope)
195
195
  end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<people type=\"array\">\n <person>\n <person>\n </person>\n </person>\n <person>\n <person>\n </person>\n </person>\n</people>\n"
196
+
197
+ asserts "that it sets root node for objects with :root parameter" do
198
+ template = rabl %{
199
+ collection @users, :root => :people, :object_root => :person
200
+ }
201
+ scope = Object.new
202
+ scope.instance_variable_set :@users, [User.new, User.new]
203
+ template.render(scope)
204
+ end.equals "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<people type=\"array\">\n <person>\n <person>\n </person>\n </person>\n <person>\n <person>\n </person>\n </person>\n</people>\n"
205
+
196
206
  end
197
207
 
198
208
  context "#attribute" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rabl
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,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-14 00:00:00.000000000 Z
12
+ date: 2013-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -422,15 +422,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
422
422
  - - ! '>='
423
423
  - !ruby/object:Gem::Version
424
424
  version: '0'
425
+ segments:
426
+ - 0
427
+ hash: 2506448699878914083
425
428
  required_rubygems_version: !ruby/object:Gem::Requirement
426
429
  none: false
427
430
  requirements:
428
431
  - - ! '>='
429
432
  - !ruby/object:Gem::Version
430
433
  version: '0'
434
+ segments:
435
+ - 0
436
+ hash: 2506448699878914083
431
437
  requirements: []
432
438
  rubyforge_project: rabl
433
- rubygems_version: 1.8.24
439
+ rubygems_version: 1.8.25
434
440
  signing_key:
435
441
  specification_version: 3
436
442
  summary: General ruby templating with json, bson, xml and msgpack support