old_api_resource 0.3.0

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.
Files changed (48) hide show
  1. data/.document +5 -0
  2. data/.rspec +3 -0
  3. data/Gemfile +26 -0
  4. data/Guardfile +22 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +19 -0
  7. data/Rakefile +49 -0
  8. data/VERSION +1 -0
  9. data/lib/old_api_resource.rb +70 -0
  10. data/lib/old_api_resource/associations.rb +192 -0
  11. data/lib/old_api_resource/associations/association_proxy.rb +92 -0
  12. data/lib/old_api_resource/associations/multi_object_proxy.rb +74 -0
  13. data/lib/old_api_resource/associations/related_object_hash.rb +12 -0
  14. data/lib/old_api_resource/associations/relation_scope.rb +24 -0
  15. data/lib/old_api_resource/associations/resource_scope.rb +25 -0
  16. data/lib/old_api_resource/associations/scope.rb +88 -0
  17. data/lib/old_api_resource/associations/single_object_proxy.rb +64 -0
  18. data/lib/old_api_resource/attributes.rb +162 -0
  19. data/lib/old_api_resource/base.rb +548 -0
  20. data/lib/old_api_resource/callbacks.rb +49 -0
  21. data/lib/old_api_resource/connection.rb +167 -0
  22. data/lib/old_api_resource/core_extensions.rb +7 -0
  23. data/lib/old_api_resource/custom_methods.rb +119 -0
  24. data/lib/old_api_resource/exceptions.rb +85 -0
  25. data/lib/old_api_resource/formats.rb +14 -0
  26. data/lib/old_api_resource/formats/json_format.rb +25 -0
  27. data/lib/old_api_resource/formats/xml_format.rb +36 -0
  28. data/lib/old_api_resource/log_subscriber.rb +15 -0
  29. data/lib/old_api_resource/mocks.rb +260 -0
  30. data/lib/old_api_resource/model_errors.rb +86 -0
  31. data/lib/old_api_resource/observing.rb +29 -0
  32. data/lib/old_api_resource/railtie.rb +18 -0
  33. data/old_api_resource.gemspec +134 -0
  34. data/spec/lib/associations_spec.rb +519 -0
  35. data/spec/lib/attributes_spec.rb +121 -0
  36. data/spec/lib/base_spec.rb +499 -0
  37. data/spec/lib/callbacks_spec.rb +68 -0
  38. data/spec/lib/mocks_spec.rb +28 -0
  39. data/spec/lib/model_errors_spec.rb +29 -0
  40. data/spec/spec_helper.rb +36 -0
  41. data/spec/support/mocks/association_mocks.rb +46 -0
  42. data/spec/support/mocks/error_resource_mocks.rb +21 -0
  43. data/spec/support/mocks/test_resource_mocks.rb +43 -0
  44. data/spec/support/requests/association_requests.rb +14 -0
  45. data/spec/support/requests/error_resource_requests.rb +25 -0
  46. data/spec/support/requests/test_resource_requests.rb +31 -0
  47. data/spec/support/test_resource.rb +50 -0
  48. metadata +286 -0
@@ -0,0 +1,68 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ include OldApiResource
4
+
5
+ describe "Should put callbacks around save, create, update, and destroy by default" do
6
+
7
+ before(:all) do
8
+ # This defines all the callbacks to check and see if they are fired
9
+ TestResource.class_eval <<-EOE, __FILE__, __LINE__ + 1
10
+ attr_accessor :s_val, :c_val, :u_val, :d_val
11
+ before_save :bs_cb; after_save :as_cb
12
+ before_create :bc_cb; after_create :ac_cb
13
+ before_update :bu_cb; after_update :au_cb
14
+ before_destroy :bd_cb; after_destroy :ad_cb
15
+
16
+ def bs_cb
17
+ @s_val = 1
18
+ end
19
+ def as_cb
20
+ @s_val += 1
21
+ end
22
+ def bc_cb
23
+ @c_val = 1
24
+ end
25
+ def ac_cb
26
+ @c_val += 1
27
+ end
28
+ def bu_cb
29
+ @u_val = 1
30
+ end
31
+ def au_cb
32
+ @u_val += 1
33
+ end
34
+ def bd_cb
35
+ @d_val = 1
36
+ end
37
+ def ad_cb
38
+ @d_val += 1
39
+ end
40
+ EOE
41
+ end
42
+
43
+ it "should fire save and create callbacks when saving a new record" do
44
+ tr = TestResource.new(:name => "Ethan", :age => 20)
45
+ tr.save.should be_true
46
+ tr.s_val.should eql(2)
47
+ tr.c_val.should eql(2)
48
+ tr.u_val.should be_nil
49
+ end
50
+
51
+ it "should fire save and update callbacks when updating a record" do
52
+ tr = TestResource.new(:id => 1, :name => "Ethan", :age => 20)
53
+ tr.name = "Test"
54
+ tr.age = 21
55
+ tr.save.should be_true
56
+ tr.s_val.should eql(2)
57
+ tr.c_val.should be_nil
58
+ tr.u_val.should eql(2)
59
+ end
60
+
61
+ it "should only fire destroy callbacks when destroying a record" do
62
+ tr = TestResource.new(:id => 1, :name => "Ethan", :age => 20)
63
+ tr.destroy.should be_true
64
+ tr.d_val.should eql(2)
65
+ tr.s_val.should be_nil
66
+ end
67
+
68
+ end
@@ -0,0 +1,28 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+ require 'json'
3
+
4
+ include OldApiResource
5
+
6
+ describe Mocks do
7
+
8
+ # we set up the mocks in spec helper, so we can just assert this
9
+ it "should hijack the connection" do
10
+ OldApiResource::Mocks::Interface.any_instance.expects(:get).once.returns(
11
+ OldApiResource::Mocks::MockResponse.new("", {:headers => {"Content-type" => "application/json"}, :status_code => 200})
12
+ )
13
+ TestResource.reload_class_attributes
14
+ end
15
+
16
+ it "should allow the user to raise errors for invalid responsed" do
17
+ old_err_status = OldApiResource.raise_missing_definition_error
18
+ OldApiResource::Base.raise_missing_definition_error = true
19
+
20
+ lambda {
21
+ class MyNewInvalidResource < OldApiResource::Base; end
22
+ MyNewInvalidResource.new
23
+ }.should raise_error(OldApiResource::ResourceNotFound)
24
+
25
+ OldApiResource.raise_missing_definition_error = old_err_status
26
+ end
27
+
28
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ include OldApiResource
4
+
5
+ describe "Saving Resources with errors" do
6
+
7
+ before(:all) do
8
+ ErrorResource.include_root_in_json = true
9
+ end
10
+
11
+ context "Remote Errors" do
12
+
13
+ it "should be able to handle errors as a hash" do
14
+ t = ErrorResource.new(:name => "Ethan", :age => 12)
15
+ t.save.should be_false
16
+ t.errors.should_not be_nil
17
+ t.errors['name'].should_not be_nil
18
+ end
19
+
20
+ it "should be able to handle errors as full messages" do
21
+ t = ErrorFullMessageResource.new(:name => "Ethan", :age => 12)
22
+ t.save.should be_false
23
+ t.errors.should_not be_nil
24
+ t.errors['name'].should_not be_nil
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -0,0 +1,36 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'bundler'
5
+ require 'old_api_resource'
6
+ require 'simplecov'
7
+
8
+ # Requires supporting files with custom matchers and macros, etc,
9
+ # in ./support/ and its subdirectories.
10
+ Bundler.require(:default, :development)
11
+ Debugger.start
12
+
13
+ SimpleCov.start do
14
+ add_filter "/spec/"
15
+ end
16
+
17
+ SimpleCov.at_exit do
18
+ SimpleCov.result.format!
19
+ end
20
+
21
+ # Requires supporting files with custom matchers and macros, etc,
22
+ # in ./support/ and its subdirectories.
23
+ #OldApiResource.load_mocks_and_factories
24
+ OldApiResource.site = 'http://localhost:3000'
25
+ OldApiResource.format = :json
26
+ OldApiResource.load_mocks_and_factories
27
+
28
+ OldApiResource.logger.level = Log4r::INFO
29
+
30
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
31
+
32
+
33
+
34
+ RSpec.configure do |config|
35
+
36
+ end
@@ -0,0 +1,46 @@
1
+ include OldApiResource
2
+
3
+ Mocks.define do
4
+
5
+ endpoint('/single_object_association') do
6
+ get(HashDealer.roll(:test_association_resource), :params => {})
7
+ get(HashDealer.roll(:active_test_association_resource), :params => {:active => true})
8
+ get(HashDealer.roll(:active_birthday_test_association_resource), :params => {:active => true, :birthday => true})
9
+ end
10
+
11
+ endpoint('/multi_object_association') do
12
+ get((0..4).to_a.collect{HashDealer.roll(:test_association_resource)}, :params => {})
13
+ get((0..4).to_a.collect{HashDealer.roll(:active_test_association_resource)}, :params => {:active => true})
14
+ get((0..4).to_a.collect{HashDealer.roll(:active_test_association_resource)}, :params => {:active => false})
15
+ get((0..4).to_a.collect{HashDealer.roll(:active_birthday_test_association_resource)}, :params => {:active => true, :birthday => true})
16
+ end
17
+
18
+ endpoint("/has_one_objects/new") do
19
+ get({})
20
+ end
21
+
22
+ endpoint("/has_many_objects/new") do
23
+ get({
24
+ "attributes" => {
25
+ "public" => ["name"]
26
+ }
27
+ })
28
+ end
29
+
30
+ endpoint("/belongs_to_objects/new") do
31
+ get({})
32
+ end
33
+
34
+ endpoint("/test_associations/new") do
35
+ get({})
36
+ end
37
+
38
+ endpoint("/inner_classes/new") do
39
+ get({})
40
+ end
41
+
42
+ endpoint("/childern/new") do
43
+ get({})
44
+ end
45
+
46
+ end
@@ -0,0 +1,21 @@
1
+ include OldApiResource
2
+
3
+ Mocks.define do
4
+
5
+ endpoint("/error_resources/new") do
6
+ get(HashDealer.roll(:new_error_resource))
7
+ end
8
+
9
+ endpoint("/error_resources") do
10
+ post(HashDealer.roll(:error_resource_errors), :params => {:error_resource => HashDealer.roll(:error_resource).matcher}, :status_code => 422)
11
+ end
12
+
13
+ endpoint("/error_full_message_resources/new") do
14
+ get(HashDealer.roll(:new_error_resource))
15
+ end
16
+
17
+ endpoint("/error_full_message_resources") do
18
+ post(HashDealer.roll(:error_resource_full_message_errors), :params => {:error_full_message_resource => HashDealer.roll(:error_resource).matcher}, :status_code => 422)
19
+ end
20
+
21
+ end
@@ -0,0 +1,43 @@
1
+ include OldApiResource
2
+
3
+ Mocks.define do
4
+
5
+ endpoint("/test_resources/new") do
6
+ get(HashDealer.roll(:new_test_object))
7
+ end
8
+
9
+ endpoint("/test_resources") do
10
+ post(HashDealer.roll(:test_resource).merge(:id => 1), :params => {:test_resource => HashDealer.roll(:test_resource).matcher})
11
+ get((0..4).to_a.collect{HashDealer.roll(:test_resource)})
12
+ get((0..4).to_a.collect{HashDealer.roll(:test_resource)}, :params => {:active => true})
13
+ end
14
+
15
+ endpoint("/test_resources/:id") do
16
+ get(HashDealer.roll(:test_resource)) do |params|
17
+ self.merge(params)
18
+ end
19
+ delete({})
20
+ put({}, :params => {:test_resource => HashDealer.roll(:test_resource).matcher})
21
+ end
22
+
23
+ endpoint("/child_test_resources/new") do
24
+ get({})
25
+ end
26
+
27
+ endpoint("/child_test_resource2s/new") do
28
+ get({})
29
+ end
30
+
31
+ endpoint("/another_test_resources/new") do
32
+ get({})
33
+ end
34
+
35
+ endpoint("/test_classes/new") do
36
+ get({})
37
+ end
38
+
39
+ endpoint("/children/new") do
40
+ get({})
41
+ end
42
+
43
+ end
@@ -0,0 +1,14 @@
1
+ HashDealer.define(:test_association_resource) do
2
+ id{Kernel.rand(99999)}
3
+ name{Faker::Name.first_name}
4
+ age{Kernel.rand(99999)}
5
+ active(false)
6
+ end
7
+
8
+ HashDealer.define(:active_test_association_resource, :parent => :test_association_resource) do
9
+ active(true)
10
+ end
11
+
12
+ HashDealer.define(:active_birthday_test_association_resource, :parent => :active_test_association_resource) do
13
+ birthday{Date.today}
14
+ end
@@ -0,0 +1,25 @@
1
+ HashDealer.define(:new_error_resource) do
2
+ attributes({
3
+ :protected => [:id],
4
+ :public => [:name, :age],
5
+ })
6
+ end
7
+
8
+ HashDealer.define(:error_resource) do
9
+ name("Name")
10
+ age("age")
11
+ end
12
+
13
+ HashDealer.define(:error_resource_errors) do
14
+ errors({
15
+ :name => ["must not be empty"],
16
+ :age => ["must be a valid integer"]
17
+ })
18
+ end
19
+
20
+ HashDealer.define(:error_resource_full_message_errors) do
21
+ errors([
22
+ "Name cannot be empty",
23
+ "Age must be a valid integer"
24
+ ])
25
+ end
@@ -0,0 +1,31 @@
1
+ HashDealer.define(:new_test_object) do
2
+ attributes({
3
+ :protected => [:id],
4
+ :public => [:name, :age],
5
+ })
6
+ scopes([
7
+ {:active => {:active => true}},
8
+ {:paginate => {:paginate => true, :per_page => :per_page, :current_page => :current_page}}
9
+ ])
10
+ associations({
11
+ :has_many => {:has_many_objects => {}},
12
+ :belongs_to => {:belongs_to_object => {}},
13
+ :has_one => {:has_one_object => {}}
14
+ })
15
+ # Think of a use case for this
16
+ options({
17
+
18
+ })
19
+ end
20
+
21
+ HashDealer.define(:test_resource) do
22
+ name("name")
23
+ age("age")
24
+ end
25
+
26
+ HashDealer.define(:test_resource_errors) do
27
+ errors({
28
+ :name => ["can't be blank"],
29
+ :age => ["must be a valid number"]
30
+ })
31
+ end
@@ -0,0 +1,50 @@
1
+ class TestResource < OldApiResource::Base
2
+ end
3
+
4
+ class ChildTestResource < TestResource
5
+ end
6
+
7
+ class AnotherTestResource < OldApiResource::Base
8
+
9
+ end
10
+
11
+ class HasManyObject < OldApiResource::Base
12
+ end
13
+
14
+ class BelongsToObject < OldApiResource::Base
15
+ end
16
+
17
+ class HasOneObject < OldApiResource::Base
18
+ end
19
+
20
+ class ErrorResource < OldApiResource::Base
21
+
22
+ end
23
+
24
+ class ErrorFullMessageResource < OldApiResource::Base
25
+
26
+ end
27
+
28
+ module TestMod
29
+
30
+ module InnerMod
31
+
32
+ class InnerClass < OldApiResource::Base
33
+
34
+ end
35
+
36
+ end
37
+
38
+ class TestClass < OldApiResource::Base
39
+
40
+ end
41
+
42
+ class TestAssociation < OldApiResource::Base
43
+
44
+ end
45
+
46
+ class TestResource < OldApiResource::Base
47
+
48
+ end
49
+
50
+ end
metadata ADDED
@@ -0,0 +1,286 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: old_api_resource
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ethan Langevin
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-05 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &2158182900 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - =
20
+ - !ruby/object:Gem::Version
21
+ version: 3.0.9
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *2158182900
25
+ - !ruby/object:Gem::Dependency
26
+ name: hash_dealer
27
+ requirement: &2158178260 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2158178260
36
+ - !ruby/object:Gem::Dependency
37
+ name: rest-client
38
+ requirement: &2158176460 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *2158176460
47
+ - !ruby/object:Gem::Dependency
48
+ name: log4r
49
+ requirement: &2158175200 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *2158175200
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec
60
+ requirement: &2158174240 !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: *2158174240
69
+ - !ruby/object:Gem::Dependency
70
+ name: ruby-debug19
71
+ requirement: &2158173360 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *2158173360
80
+ - !ruby/object:Gem::Dependency
81
+ name: growl
82
+ requirement: &2158171860 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *2158171860
91
+ - !ruby/object:Gem::Dependency
92
+ name: rspec-rails
93
+ requirement: &2158163700 !ruby/object:Gem::Requirement
94
+ none: false
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: *2158163700
102
+ - !ruby/object:Gem::Dependency
103
+ name: factory_girl
104
+ requirement: &2158162740 !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: *2158162740
113
+ - !ruby/object:Gem::Dependency
114
+ name: simplecov
115
+ requirement: &2158162120 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ type: :development
122
+ prerelease: false
123
+ version_requirements: *2158162120
124
+ - !ruby/object:Gem::Dependency
125
+ name: faker
126
+ requirement: &2158161200 !ruby/object:Gem::Requirement
127
+ none: false
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: *2158161200
135
+ - !ruby/object:Gem::Dependency
136
+ name: guard
137
+ requirement: &2158160360 !ruby/object:Gem::Requirement
138
+ none: false
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ type: :development
144
+ prerelease: false
145
+ version_requirements: *2158160360
146
+ - !ruby/object:Gem::Dependency
147
+ name: guard-rspec
148
+ requirement: &2158157420 !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: *2158157420
157
+ - !ruby/object:Gem::Dependency
158
+ name: mocha
159
+ requirement: &2158156920 !ruby/object:Gem::Requirement
160
+ none: false
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ type: :development
166
+ prerelease: false
167
+ version_requirements: *2158156920
168
+ - !ruby/object:Gem::Dependency
169
+ name: bundler
170
+ requirement: &2158156240 !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ~>
174
+ - !ruby/object:Gem::Version
175
+ version: 1.0.0
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: *2158156240
179
+ - !ruby/object:Gem::Dependency
180
+ name: jeweler
181
+ requirement: &2158155700 !ruby/object:Gem::Requirement
182
+ none: false
183
+ requirements:
184
+ - - ~>
185
+ - !ruby/object:Gem::Version
186
+ version: 1.6.4
187
+ type: :development
188
+ prerelease: false
189
+ version_requirements: *2158155700
190
+ - !ruby/object:Gem::Dependency
191
+ name: rcov
192
+ requirement: &2158155120 !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: *2158155120
201
+ description: A replacement for ActiveResource for RESTful APIs that handles associated
202
+ object and multiple data sources
203
+ email: ejl6266@gmail.com
204
+ executables: []
205
+ extensions: []
206
+ extra_rdoc_files:
207
+ - LICENSE.txt
208
+ - README.rdoc
209
+ files:
210
+ - .document
211
+ - .rspec
212
+ - Gemfile
213
+ - Guardfile
214
+ - LICENSE.txt
215
+ - README.rdoc
216
+ - Rakefile
217
+ - VERSION
218
+ - lib/old_api_resource.rb
219
+ - lib/old_api_resource/associations.rb
220
+ - lib/old_api_resource/associations/association_proxy.rb
221
+ - lib/old_api_resource/associations/multi_object_proxy.rb
222
+ - lib/old_api_resource/associations/related_object_hash.rb
223
+ - lib/old_api_resource/associations/relation_scope.rb
224
+ - lib/old_api_resource/associations/resource_scope.rb
225
+ - lib/old_api_resource/associations/scope.rb
226
+ - lib/old_api_resource/associations/single_object_proxy.rb
227
+ - lib/old_api_resource/attributes.rb
228
+ - lib/old_api_resource/base.rb
229
+ - lib/old_api_resource/callbacks.rb
230
+ - lib/old_api_resource/connection.rb
231
+ - lib/old_api_resource/core_extensions.rb
232
+ - lib/old_api_resource/custom_methods.rb
233
+ - lib/old_api_resource/exceptions.rb
234
+ - lib/old_api_resource/formats.rb
235
+ - lib/old_api_resource/formats/json_format.rb
236
+ - lib/old_api_resource/formats/xml_format.rb
237
+ - lib/old_api_resource/log_subscriber.rb
238
+ - lib/old_api_resource/mocks.rb
239
+ - lib/old_api_resource/model_errors.rb
240
+ - lib/old_api_resource/observing.rb
241
+ - lib/old_api_resource/railtie.rb
242
+ - old_api_resource.gemspec
243
+ - spec/lib/associations_spec.rb
244
+ - spec/lib/attributes_spec.rb
245
+ - spec/lib/base_spec.rb
246
+ - spec/lib/callbacks_spec.rb
247
+ - spec/lib/mocks_spec.rb
248
+ - spec/lib/model_errors_spec.rb
249
+ - spec/spec_helper.rb
250
+ - spec/support/mocks/association_mocks.rb
251
+ - spec/support/mocks/error_resource_mocks.rb
252
+ - spec/support/mocks/test_resource_mocks.rb
253
+ - spec/support/requests/association_requests.rb
254
+ - spec/support/requests/error_resource_requests.rb
255
+ - spec/support/requests/test_resource_requests.rb
256
+ - spec/support/test_resource.rb
257
+ homepage: http://github.com/ejlangev/resource
258
+ licenses:
259
+ - MIT
260
+ post_install_message:
261
+ rdoc_options: []
262
+ require_paths:
263
+ - lib
264
+ required_ruby_version: !ruby/object:Gem::Requirement
265
+ none: false
266
+ requirements:
267
+ - - ! '>='
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ segments:
271
+ - 0
272
+ hash: -3318073269497173101
273
+ required_rubygems_version: !ruby/object:Gem::Requirement
274
+ none: false
275
+ requirements:
276
+ - - ! '>='
277
+ - !ruby/object:Gem::Version
278
+ version: '0'
279
+ requirements: []
280
+ rubyforge_project:
281
+ rubygems_version: 1.8.8
282
+ signing_key:
283
+ specification_version: 3
284
+ summary: A replacement for ActiveResource for RESTful APIs that handles associated
285
+ object and multiple data sources
286
+ test_files: []