old_api_resource 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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: []