acts_as_api 0.4.1 → 0.4.2

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDkxOTQ3MWZmMjk3YWJiZGRhYjk3OGE5NWU2ZWJmMzRhYmRlNzkwMg==
5
+ data.tar.gz: !binary |-
6
+ M2VlNDBlNzUyMzJmNzM2MjdjNTA5ODQzYzBlNTJiM2ZjYzliOGQ4Yw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MzYyNGY5MjY2NTk0ZjViNGI5NjMwZTU4YjBkNjYzZGI3ZDcwZmE3ZmU3MDhl
10
+ NDMwYTUzZmQyZmNmZjY1NzlkYzRiMjc4MjlhZTFhNWJkNjkxNzE2YTM4ZDcy
11
+ YzIyYzg5ZTYyYTY1N2FmYmVlNzZhZmMwNzBjYmI3ODMxM2ZhYTA=
12
+ data.tar.gz: !binary |-
13
+ NjEwMmZiMjFmMTFlNDIzMmViMzdmMDk1OGEwM2UwMmExZDZhNWJhNmY1Mzhj
14
+ NTRlYTVlMWQwNzg3MzI3MTBiZjJiOTkzMDBmZWRmOWE1MzUzMzM2NDU2ZWNj
15
+ NGQzYzBlM2RmZTE2OTM2ODM2MDA5NjFkZjhmNDQwN2U4NTg1MDk=
@@ -1,8 +1,5 @@
1
1
  script: bundle exec rake spec:all
2
-
2
+ services:
3
+ - mongodb
3
4
  rvm:
4
- - 1.8.7
5
- - 1.9.2
6
5
  - 1.9.3
7
- - ruby-head
8
- - ree
@@ -1,3 +1,7 @@
1
+ === 0.4.2 2013-12-28
2
+
3
+ * Fixed problem with rendering of POROs (see PR #88)
4
+
1
5
  === 0.4.1 2012-07-18
2
6
 
3
7
  * Added support for Mongoid 3
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # acts_as_api ![acts_as_api on travis ci](http://travis-ci.org/fabrik42/acts_as_api.png)
1
+ # acts_as_api ![acts_as_api on travis ci](https://secure.travis-ci.org/fabrik42/acts_as_api.png?branch=master)
2
2
 
3
3
  acts_as_api makes creating XML/JSON responses in Rails 3 easy and fun.
4
4
 
@@ -80,12 +80,16 @@ There are a lot of how-tos like:
80
80
 
81
81
  * Want to contribute - the spec suite is explained here: https://github.com/fabrik42/acts_as_api/tree/master/spec
82
82
 
83
- ### Travis CI build status ![acts_as_api on travis ci](http://travis-ci.org/fabrik42/acts_as_api.png)
83
+ ### Travis CI build status ![acts_as_api on travis ci](https://secure.travis-ci.org/fabrik42/acts_as_api.png?branch=master)
84
84
 
85
- Specs run with 1.9.3, 1.9.2, 1.8.7 and REE: http://travis-ci.org/#!/fabrik42/acts_as_api
85
+ Specs run with 1.9.3: http://travis-ci.org/#!/fabrik42/acts_as_api
86
86
 
87
87
  ### Tested with:
88
88
 
89
+ It has been used in production with the following ruby versions.
90
+
91
+ They are not integrated in Travis, because optional dependencies (like Mongoid 3) don't support these Ruby versions.
92
+
89
93
  * MRI 1.9.3-p125
90
94
  * MRI 1.9.2-p290
91
95
  * MRI 1.8.7-p358
data/Rakefile CHANGED
@@ -12,8 +12,7 @@ namespace :spec do
12
12
 
13
13
  supported_orms.each do |orm|
14
14
  desc "Run #{orm} specs only"
15
- RSpec::Core::RakeTask.new do |t|
16
- t.name = orm
15
+ RSpec::Core::RakeTask.new(orm) do |t|
17
16
  t.rspec_opts = ["--color"]
18
17
  end
19
18
 
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.add_dependency('activesupport','>= 3.0.0')
17
17
  s.add_dependency('rack','>= 1.1.0')
18
18
 
19
- s.add_development_dependency('rails', ['>= 3.2.3'])
19
+ s.add_development_dependency('rails', ['>= 3.2.16'])
20
20
  s.add_development_dependency('mongoid', ['>= 3.0.1'])
21
21
 
22
22
  s.rdoc_options = ['--charset=UTF-8']
@@ -34,7 +34,7 @@ module ActsAsApi
34
34
  # be contained in the api responses.
35
35
  def api_accessible(api_template, options = {}, &block)
36
36
 
37
- attributes = api_accessible_attributes(api_template) || ApiTemplate.new(api_template)
37
+ attributes = api_accessible_attributes(api_template).try(:dup) || ApiTemplate.new(api_template)
38
38
 
39
39
  attributes.merge!(api_accessible_attributes(options[:extend])) if options[:extend]
40
40
 
@@ -47,12 +47,13 @@ module ActsAsApi
47
47
  api_root_name = api_model.collection_name
48
48
  elsif api_model.is_a?(Array) && !api_model.empty? && api_model.first.class.respond_to?(:model_name)
49
49
  api_root_name = api_model.first.class.model_name
50
+ elsif api_model.is_a?(Array) && !api_model.empty? && api_model.first.respond_to?(:model_name)
51
+ api_root_name = api_model.first.model_name
50
52
  elsif api_model.respond_to?(:model_name)
51
53
  api_root_name = api_model.model_name
52
54
  else
53
55
  api_root_name = ActsAsApi::Config.default_root.to_s
54
56
  end
55
-
56
57
  api_root_name = api_root_name.to_s.underscore.tr('/', '_')
57
58
 
58
59
  if api_model.is_a?(Array) || (defined?(ActiveRecord) && api_model.is_a?(ActiveRecord::Relation))
@@ -1,3 +1,3 @@
1
1
  module ActsAsApi
2
- VERSION = "0.4.1"
3
- end
2
+ VERSION = "0.4.2"
3
+ end
@@ -38,7 +38,7 @@ They contain **no controllers** to be tested, just models that match the tested
38
38
 
39
39
  * Create to Models used in the spec (`User, Profile, Untouched, Task`).
40
40
 
41
- * Include `SharedEngine::UserTemplate` in your `User` model.
41
+ * Include `UserTemplate` in your `User` model.
42
42
 
43
43
  * Add `mount SharedEngine::Engine => "/shared", :as => "shared"` to your `routes.rb`
44
44
 
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe SharedEngine::PlainObjectsController do
4
+ include ApiTestHelpers
5
+
6
+ before(:each) do
7
+ class SharedEngine::PlainObjectsController
8
+ include SimpleFixtures
9
+ end
10
+ end
11
+
12
+ describe 'get all users as a an array of plain objects, autodetecting the root node name' do
13
+
14
+ before(:each) do
15
+ get :index, :format => 'json', :api_template => :name_only
16
+ end
17
+
18
+ it "should have a root node named users" do
19
+ response_body_json.should have_key("plain_objects")
20
+ end
21
+
22
+ it "should contain all users" do
23
+ response_body_json["plain_objects"].should be_a(Array)
24
+ end
25
+
26
+ it "should contain the specified attributes" do
27
+ response_body_json["plain_objects"].first.should have_key("first_name")
28
+ response_body_json["plain_objects"].first.should have_key("last_name")
29
+ end
30
+
31
+ it "should contain the specified values" do
32
+ response_body_json["plain_objects"].first["first_name"].should eql("Han")
33
+ response_body_json["plain_objects"].first["last_name"].should eql("Solo")
34
+ end
35
+ end
36
+ end
@@ -16,7 +16,7 @@ class User
16
16
 
17
17
  acts_as_api
18
18
 
19
- include SharedEngine::UserTemplate
19
+ include UserTemplate
20
20
 
21
21
  def over_thirty?
22
22
  age > 30
@@ -0,0 +1,14 @@
1
+ module SharedEngine
2
+ class PlainObjectsController < SharedEngine::ApplicationController
3
+ before_filter :setup_objects
4
+
5
+ def index
6
+ @users = [@han, @luke, @leia]
7
+
8
+ respond_to do |format|
9
+ format.xml { render_for_api params[:api_template].to_sym, :xml => @users }
10
+ format.json { render_for_api params[:api_template].to_sym, :json => @users }
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ class PlainObject < Struct.new(:first_name, :last_name, :age, :active)
2
+ extend ActsAsApi::Base
3
+
4
+ def initialize(opts)
5
+ opts.each do |k, v|
6
+ send("#{k}=", v)
7
+ end
8
+ end
9
+
10
+ def model_name
11
+ 'plain_object'
12
+ end
13
+
14
+ acts_as_api
15
+
16
+ include SharedEngine::UserTemplate
17
+ end
@@ -23,4 +23,6 @@ SharedEngine::Engine.routes.draw do
23
23
  get 'show_prefix_postfix'
24
24
  end
25
25
  end
26
+
27
+ resources :plain_objects
26
28
  end
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"]
17
17
 
18
- s.add_dependency "rails", "~> 3.2.3"
18
+ s.add_dependency "rails", "~> 3.2.16"
19
19
  # s.add_dependency "jquery-rails"
20
20
 
21
21
  s.add_development_dependency "sqlite3"
@@ -21,6 +21,12 @@ module SimpleFixtures
21
21
  User.delete_all
22
22
  end
23
23
 
24
+ def setup_objects
25
+ @luke = PlainObject.new({ :first_name => 'Luke', :last_name => 'Skywalker', :age => 25, :active => true })
26
+ @han = PlainObject.new({ :first_name => 'Han', :last_name => 'Solo', :age => 35, :active => true })
27
+ @leia = PlainObject.new({ :first_name => 'Princess', :last_name => 'Leia', :age => 25, :active => false })
28
+ end
29
+
24
30
  # def setup_roflscale_models
25
31
  # @orm_for_testing = :vanilla
26
32
  # @user_model = VanillaUser
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
5
- prerelease:
4
+ version: 0.4.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Christian Bäuerlein
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-07-18 00:00:00.000000000 Z
11
+ date: 2013-12-28 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activemodel
16
- requirement: &70279657916060 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.0.0
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70279657916060
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 3.0.0
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: activesupport
27
- requirement: &70279657914840 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ! '>='
31
32
  - !ruby/object:Gem::Version
32
33
  version: 3.0.0
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *70279657914840
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.0
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: rack
38
- requirement: &70279657914060 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
45
  - - ! '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: 1.1.0
44
48
  type: :runtime
45
49
  prerelease: false
46
- version_requirements: *70279657914060
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.0
47
55
  - !ruby/object:Gem::Dependency
48
56
  name: rails
49
- requirement: &70279657913480 !ruby/object:Gem::Requirement
50
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
59
  - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
- version: 3.2.3
61
+ version: 3.2.16
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70279657913480
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: 3.2.16
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: mongoid
60
- requirement: &70279657912660 !ruby/object:Gem::Requirement
61
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
73
  - - ! '>='
64
74
  - !ruby/object:Gem::Version
65
75
  version: 3.0.1
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70279657912660
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: 3.0.1
69
83
  description: acts_as_api enriches the models and controllers of your app in a rails-like
70
84
  way so you can easily determine how your XML/JSON API responses should look like.
71
85
  email:
@@ -148,6 +162,7 @@ files:
148
162
  - spec/active_record_dummy/vendor/assets/javascripts/.gitkeep
149
163
  - spec/active_record_dummy/vendor/assets/stylesheets/.gitkeep
150
164
  - spec/active_record_dummy/vendor/plugins/.gitkeep
165
+ - spec/controllers/plain_objects_controller_spec.rb
151
166
  - spec/controllers/respond_with_users_controller_spec.rb
152
167
  - spec/controllers/users_controller_spec.rb
153
168
  - spec/models/model_spec.rb
@@ -209,9 +224,11 @@ files:
209
224
  - spec/shared_engine/app/assets/javascripts/shared_engine/application.js
210
225
  - spec/shared_engine/app/assets/stylesheets/shared_engine/application.css
211
226
  - spec/shared_engine/app/controllers/shared_engine/application_controller.rb
227
+ - spec/shared_engine/app/controllers/shared_engine/plain_objects_controller.rb
212
228
  - spec/shared_engine/app/controllers/shared_engine/respond_with_users_controller.rb
213
229
  - spec/shared_engine/app/controllers/shared_engine/users_controller.rb
214
230
  - spec/shared_engine/app/helpers/shared_engine/application_helper.rb
231
+ - spec/shared_engine/app/models/plain_object.rb
215
232
  - spec/shared_engine/app/models/user_template.rb
216
233
  - spec/shared_engine/app/views/layouts/shared_engine/application.html.erb
217
234
  - spec/shared_engine/config/routes.rb
@@ -277,28 +294,27 @@ files:
277
294
  - spec/support/simple_fixtures.rb
278
295
  homepage: https://github.com/fabrik42/acts_as_api
279
296
  licenses: []
297
+ metadata: {}
280
298
  post_install_message:
281
299
  rdoc_options:
282
300
  - --charset=UTF-8
283
301
  require_paths:
284
302
  - lib
285
303
  required_ruby_version: !ruby/object:Gem::Requirement
286
- none: false
287
304
  requirements:
288
305
  - - ! '>='
289
306
  - !ruby/object:Gem::Version
290
307
  version: '0'
291
308
  required_rubygems_version: !ruby/object:Gem::Requirement
292
- none: false
293
309
  requirements:
294
310
  - - ! '>='
295
311
  - !ruby/object:Gem::Version
296
312
  version: '0'
297
313
  requirements: []
298
314
  rubyforge_project:
299
- rubygems_version: 1.8.17
315
+ rubygems_version: 2.1.11
300
316
  signing_key:
301
- specification_version: 3
317
+ specification_version: 4
302
318
  summary: Makes creating XML/JSON responses in Rails 3 easy and fun.
303
319
  test_files:
304
320
  - spec/README.md
@@ -352,6 +368,7 @@ test_files:
352
368
  - spec/active_record_dummy/vendor/assets/javascripts/.gitkeep
353
369
  - spec/active_record_dummy/vendor/assets/stylesheets/.gitkeep
354
370
  - spec/active_record_dummy/vendor/plugins/.gitkeep
371
+ - spec/controllers/plain_objects_controller_spec.rb
355
372
  - spec/controllers/respond_with_users_controller_spec.rb
356
373
  - spec/controllers/users_controller_spec.rb
357
374
  - spec/models/model_spec.rb
@@ -413,9 +430,11 @@ test_files:
413
430
  - spec/shared_engine/app/assets/javascripts/shared_engine/application.js
414
431
  - spec/shared_engine/app/assets/stylesheets/shared_engine/application.css
415
432
  - spec/shared_engine/app/controllers/shared_engine/application_controller.rb
433
+ - spec/shared_engine/app/controllers/shared_engine/plain_objects_controller.rb
416
434
  - spec/shared_engine/app/controllers/shared_engine/respond_with_users_controller.rb
417
435
  - spec/shared_engine/app/controllers/shared_engine/users_controller.rb
418
436
  - spec/shared_engine/app/helpers/shared_engine/application_helper.rb
437
+ - spec/shared_engine/app/models/plain_object.rb
419
438
  - spec/shared_engine/app/models/user_template.rb
420
439
  - spec/shared_engine/app/views/layouts/shared_engine/application.html.erb
421
440
  - spec/shared_engine/config/routes.rb