reactive_resource 0.6.1 → 0.7.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.
- data/.travis.yml +10 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +16 -13
- data/lib/reactive_resource/base.rb +18 -15
- data/lib/reactive_resource/version.rb +1 -1
- data/reactive_resource.gemspec +4 -2
- data/test/unit/base_test.rb +31 -20
- metadata +58 -69
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,25 +1,28 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
reactive_resource (0.
|
5
|
-
activeresource (>=
|
4
|
+
reactive_resource (0.7.0)
|
5
|
+
activeresource (>= 3.1)
|
6
|
+
activesupport (>= 3.1)
|
6
7
|
|
7
8
|
GEM
|
8
9
|
remote: http://rubygems.org/
|
9
10
|
specs:
|
10
|
-
activemodel (3.
|
11
|
-
activesupport (= 3.
|
12
|
-
builder (~>
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
activemodel (3.2.2)
|
12
|
+
activesupport (= 3.2.2)
|
13
|
+
builder (~> 3.0.0)
|
14
|
+
activeresource (3.2.2)
|
15
|
+
activemodel (= 3.2.2)
|
16
|
+
activesupport (= 3.2.2)
|
17
|
+
activesupport (3.2.2)
|
18
|
+
i18n (~> 0.6)
|
19
|
+
multi_json (~> 1.0)
|
18
20
|
addressable (2.2.2)
|
19
|
-
builder (
|
21
|
+
builder (3.0.0)
|
20
22
|
crack (0.1.8)
|
21
|
-
i18n (0.
|
22
|
-
|
23
|
+
i18n (0.6.0)
|
24
|
+
multi_json (1.1.0)
|
25
|
+
rake (0.9.2)
|
23
26
|
shoulda (2.11.3)
|
24
27
|
webmock (1.6.2)
|
25
28
|
addressable (>= 2.2.2)
|
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'active_resource'
|
2
|
+
require 'active_support/all'
|
2
3
|
|
3
4
|
module ReactiveResource
|
4
|
-
|
5
|
+
|
5
6
|
# The class that all ReactiveResourse resources should inherit
|
6
7
|
# from. This class fixes and patches over a lot of the broken stuff
|
7
8
|
# in Active Resource, and smoothes out the differences between the
|
@@ -9,21 +10,23 @@ module ReactiveResource
|
|
9
10
|
# It also adds support for ActiveRecord-like associations.
|
10
11
|
class Base < ActiveResource::Base
|
11
12
|
extend Extensions::RelativeConstGet
|
13
|
+
class_attribute :singleton_resource
|
14
|
+
|
12
15
|
# Call this method to transform a resource into a 'singleton'
|
13
16
|
# resource. This will fix the paths Active Resource generates for
|
14
17
|
# singleton resources. See
|
15
18
|
# https://rails.lighthouseapp.com/projects/8994/tickets/4348-supporting-singleton-resources-in-activeresource
|
16
19
|
# for more info.
|
17
20
|
def self.singleton
|
18
|
-
|
21
|
+
self.singleton_resource = true
|
19
22
|
end
|
20
23
|
|
21
24
|
# +true+ if this resource is a singleton resource, +false+
|
22
25
|
# otherwise
|
23
26
|
def self.singleton?
|
24
|
-
|
27
|
+
self.singleton_resource?
|
25
28
|
end
|
26
|
-
|
29
|
+
|
27
30
|
# Active Resource's find_one does nothing if you don't pass a
|
28
31
|
# +:from+ parameter. This doesn't make sense if you're dealing
|
29
32
|
# with a singleton resource, so if we don't get anything back from
|
@@ -33,11 +36,11 @@ module ReactiveResource
|
|
33
36
|
if !found_object && singleton?
|
34
37
|
prefix_options, query_options = split_options(options[:params])
|
35
38
|
path = element_path(nil, prefix_options, query_options)
|
36
|
-
found_object = instantiate_record(connection.get(path, headers), prefix_options)
|
39
|
+
found_object = instantiate_record(format.decode(connection.get(path, headers).body), prefix_options)
|
37
40
|
end
|
38
41
|
found_object
|
39
42
|
end
|
40
|
-
|
43
|
+
|
41
44
|
# Override ActiveResource's +collection_name+ to support singular
|
42
45
|
# names for singleton resources.
|
43
46
|
def self.collection_name
|
@@ -75,7 +78,7 @@ module ReactiveResource
|
|
75
78
|
def self.element_path(id, prefix_options = {}, query_options = nil)
|
76
79
|
prefix_options, query_options = split_options(prefix_options) if query_options.nil?
|
77
80
|
element_path = "#{prefix(prefix_options)}#{association_prefix(prefix_options)}#{collection_name}"
|
78
|
-
|
81
|
+
|
79
82
|
# singleton resources don't have an ID
|
80
83
|
if id || !singleton?
|
81
84
|
element_path += "/#{id}"
|
@@ -88,7 +91,7 @@ module ReactiveResource
|
|
88
91
|
# keys corresponding to the belongs_to associations (since they'll
|
89
92
|
# be in the URL anyway), so we'll try to inject them based on the
|
90
93
|
# attributes of the object we just used.
|
91
|
-
def load(attributes)
|
94
|
+
def load(attributes, remove_root=false)
|
92
95
|
attributes = attributes.stringify_keys
|
93
96
|
self.class.belongs_to_with_parents.each do |belongs_to_param|
|
94
97
|
attributes["#{belongs_to_param}_id"] ||= prefix_options["#{belongs_to_param}_id".intern]
|
@@ -98,7 +101,7 @@ module ReactiveResource
|
|
98
101
|
# even if we aren't actually using the association.
|
99
102
|
@attributes["#{belongs_to_param}_id"] = attributes["#{belongs_to_param}_id"]
|
100
103
|
end
|
101
|
-
super(attributes)
|
104
|
+
super(attributes, remove_root)
|
102
105
|
end
|
103
106
|
|
104
107
|
# Add all of the belongs_to attributes as prefix parameters. This is
|
@@ -121,7 +124,7 @@ module ReactiveResource
|
|
121
124
|
options = options.dup
|
122
125
|
used_associations = []
|
123
126
|
parent_associations = []
|
124
|
-
|
127
|
+
|
125
128
|
# Recurse to add the parent resource hierarchy. For Phone, for
|
126
129
|
# instance, this will add the '/lawyers/:id' part of the URL,
|
127
130
|
# which it knows about from the Address class.
|
@@ -132,7 +135,7 @@ module ReactiveResource
|
|
132
135
|
|
133
136
|
# The association chain we're following
|
134
137
|
used_association = nil
|
135
|
-
|
138
|
+
|
136
139
|
belongs_to_associations.each do |association|
|
137
140
|
if !used_association && param_value = options.delete("#{association.attribute}_id".intern) # only take the first one
|
138
141
|
used_associations << association
|
@@ -150,11 +153,11 @@ module ReactiveResource
|
|
150
153
|
def self.association_prefix(options)
|
151
154
|
options = options.dup
|
152
155
|
association_prefix = ''
|
153
|
-
|
156
|
+
|
154
157
|
if belongs_to_associations
|
155
158
|
|
156
159
|
used_associations = prefix_associations(options)
|
157
|
-
|
160
|
+
|
158
161
|
association_prefix = used_associations.map do |association|
|
159
162
|
collection_name = association.associated_class.collection_name
|
160
163
|
value = options.delete("#{association.attribute}_id".intern)
|
@@ -172,7 +175,7 @@ module ReactiveResource
|
|
172
175
|
attr_accessor :associations
|
173
176
|
end
|
174
177
|
self.associations = []
|
175
|
-
|
178
|
+
|
176
179
|
# Add a has_one relationship to another class. +options+ is a hash
|
177
180
|
# of extra parameters:
|
178
181
|
#
|
@@ -182,7 +185,7 @@ module ReactiveResource
|
|
182
185
|
def self.has_one(attribute, options = {})
|
183
186
|
self.associations << Association::HasOneAssociation.new(self, attribute, options)
|
184
187
|
end
|
185
|
-
|
188
|
+
|
186
189
|
# Add a has_many relationship to another class. +options+ is a hash
|
187
190
|
# of extra parameters:
|
188
191
|
#
|
data/reactive_resource.gemspec
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
rails_version = ENV.key?('RAILS_VERSION') ? "~> #{ENV['RAILS_VERSION']}" : '>= 3.1'
|
2
3
|
$:.push File.expand_path("../lib", __FILE__)
|
3
4
|
require "reactive_resource/version"
|
4
5
|
|
@@ -14,10 +15,11 @@ Gem::Specification.new do |s|
|
|
14
15
|
|
15
16
|
s.rubyforge_project = "reactive_resource"
|
16
17
|
|
17
|
-
s.add_dependency "activeresource",
|
18
|
+
s.add_dependency "activeresource", rails_version
|
19
|
+
s.add_dependency "activesupport", rails_version
|
18
20
|
s.add_development_dependency "shoulda", '~> 2.11.3'
|
19
21
|
s.add_development_dependency "webmock", '~> 1.6.1'
|
20
|
-
|
22
|
+
|
21
23
|
s.files = `git ls-files`.split("\n")
|
22
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
25
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
data/test/unit/base_test.rb
CHANGED
@@ -19,13 +19,13 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
19
19
|
assert_equal ReactiveResource::Lawyer, @object.class.associations.detect {|assoc| assoc.attribute == :lawyer }.associated_class
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
context "A resource that inherits from ReactiveResource::Base" do
|
24
|
-
|
24
|
+
|
25
25
|
setup do
|
26
26
|
@object = ReactiveResource::Lawyer.new
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
should "hit the Avvo API with the correct URL when saved" do
|
30
30
|
stub_request(:post, "https://api.avvo.com/api/1/lawyers.json")
|
31
31
|
@object.save
|
@@ -33,14 +33,16 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
should "hit the Avvo API with the correct URL when retrieved" do
|
36
|
-
stub_request(:get, "https://api.avvo.com/api/1/lawyers/1.json")
|
36
|
+
stub_request(:get, "https://api.avvo.com/api/1/lawyers/1.json")\
|
37
|
+
.to_return(:body => {:lawyer => {:id => '1'}}.to_json)
|
37
38
|
ReactiveResource::Lawyer.find(1)
|
38
39
|
assert_requested(:get, "https://api.avvo.com/api/1/lawyers/1.json")
|
39
40
|
end
|
40
41
|
|
41
42
|
context "with a has_many relationship to another object" do
|
42
43
|
should "hit the associated object's URL with the correct parameters when requested" do
|
43
|
-
stub_request(:get, "https://api.avvo.com/api/1/lawyers/1/addresses.json")
|
44
|
+
stub_request(:get, "https://api.avvo.com/api/1/lawyers/1/addresses.json")\
|
45
|
+
.to_return(:body => [{:address => {:id => 1}}].to_json)
|
44
46
|
@object.id = 1
|
45
47
|
@object.addresses
|
46
48
|
assert_requested(:get, "https://api.avvo.com/api/1/lawyers/1/addresses.json")
|
@@ -49,7 +51,8 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
49
51
|
|
50
52
|
context "with a has_one relationship to another object" do
|
51
53
|
should "hit the associated object's URL with the correct parameters when requested" do
|
52
|
-
stub_request(:get, "https://api.avvo.com/api/1/lawyers/1/headshot.json")
|
54
|
+
stub_request(:get, "https://api.avvo.com/api/1/lawyers/1/headshot.json")\
|
55
|
+
.to_return(:body => {:headshot => {:headshot_url => "blah"}}.to_json)
|
53
56
|
@object.id = 1
|
54
57
|
@object.headshot
|
55
58
|
assert_requested(:get, "https://api.avvo.com/api/1/lawyers/1/headshot.json")
|
@@ -60,21 +63,23 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
60
63
|
setup do
|
61
64
|
@object = ReactiveResource::Address.new(:lawyer_id => 2)
|
62
65
|
end
|
63
|
-
|
66
|
+
|
64
67
|
should "hit the Avvo API with the correct URL when saved" do
|
65
68
|
stub_request(:post, "https://api.avvo.com/api/1/lawyers/2/addresses.json")
|
66
69
|
@object.save
|
67
70
|
assert_requested(:post, "https://api.avvo.com/api/1/lawyers/2/addresses.json")
|
68
71
|
end
|
69
|
-
|
72
|
+
|
70
73
|
should "hit the Avvo API with the correct URL when retrieved" do
|
71
|
-
stub_request(:get, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")
|
74
|
+
stub_request(:get, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")\
|
75
|
+
.to_return(:body => {:address => {:id => '3'}}.to_json)
|
72
76
|
ReactiveResource::Address.find(3, :params => {:lawyer_id => 2})
|
73
|
-
assert_requested(:get, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")
|
77
|
+
assert_requested(:get, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")
|
74
78
|
end
|
75
79
|
|
76
80
|
should "hit the Avvo API with the correct URL when updated" do
|
77
|
-
stub_request(:get, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")
|
81
|
+
stub_request(:get, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")\
|
82
|
+
.to_return(:body => {:address => {:id => '3'}}.to_json)
|
78
83
|
license = ReactiveResource::Address.find(3, :params => {:lawyer_id => 2})
|
79
84
|
assert_requested(:get, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")
|
80
85
|
stub_request(:put, "https://api.avvo.com/api/1/lawyers/2/addresses/3.json")
|
@@ -83,7 +88,8 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
83
88
|
end
|
84
89
|
|
85
90
|
should "set the prefix parameters correctly when saved" do
|
86
|
-
stub_request(:post, "https://api.avvo.com/api/1/lawyers/2/addresses.json")
|
91
|
+
stub_request(:post, "https://api.avvo.com/api/1/lawyers/2/addresses.json")\
|
92
|
+
.to_return(:body => {:address => {:id => '2'}}.to_json)
|
87
93
|
@object.save
|
88
94
|
assert_requested(:post, "https://api.avvo.com/api/1/lawyers/2/addresses.json")
|
89
95
|
|
@@ -112,7 +118,8 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
112
118
|
@object.doctor_id = 2
|
113
119
|
@object.address_id = 3
|
114
120
|
assert_equal 3, @object.address_id
|
115
|
-
stub_request(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3.json")
|
121
|
+
stub_request(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3.json")\
|
122
|
+
.to_return(:body => {:address => {:id => '3'}}.to_json)
|
116
123
|
@object.address
|
117
124
|
@object.address
|
118
125
|
assert_requested(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3.json", :times => 1)
|
@@ -125,7 +132,8 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
125
132
|
end
|
126
133
|
|
127
134
|
should "hit the Avvo API with the correct URL when updated" do
|
128
|
-
stub_request(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3/phones/4.json")
|
135
|
+
stub_request(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3/phones/4.json")\
|
136
|
+
.to_return(:body => {:address => {:id => '4'}}.to_json)
|
129
137
|
phone = ReactiveResource::Phone.find(4, :params => {:doctor_id => 2, :address_id => 3})
|
130
138
|
assert_requested(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3/phones/4.json")
|
131
139
|
|
@@ -141,9 +149,10 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
141
149
|
|
142
150
|
assert_equal "/api/1/doctors/2/addresses/3/phones/4.json", @object.send(:element_path)
|
143
151
|
end
|
144
|
-
|
152
|
+
|
145
153
|
should "hit the Avvo API with the correct URL when retrieved" do
|
146
|
-
stub_request(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3/phones/4.json")
|
154
|
+
stub_request(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3/phones/4.json")\
|
155
|
+
.to_return(:body => {:phone => {:id => '4'}}.to_json)
|
147
156
|
ReactiveResource::Phone.find(4, :params => {:doctor_id => 2, :address_id => 3})
|
148
157
|
assert_requested(:get, "https://api.avvo.com/api/1/doctors/2/addresses/3/phones/4.json")
|
149
158
|
end
|
@@ -153,15 +162,17 @@ class ReactiveResource::BaseTest < Test::Unit::TestCase
|
|
153
162
|
|
154
163
|
context "A resource without an extension" do
|
155
164
|
should "hit the correct urls" do
|
156
|
-
stub_request(:get, "https://api.avvo.com/api/1/no_extensions")
|
165
|
+
stub_request(:get, "https://api.avvo.com/api/1/no_extensions")\
|
166
|
+
.to_return(:body => [].to_json)
|
157
167
|
@object = ReactiveResource::NoExtension.find(:all)
|
158
168
|
assert_requested(:get, "https://api.avvo.com/api/1/no_extensions")
|
159
169
|
|
160
|
-
stub_request(:
|
170
|
+
stub_request(:post, "https://api.avvo.com/api/1/no_extensions")
|
161
171
|
@object = ReactiveResource::NoExtension.new(:id => 1).save
|
162
|
-
assert_requested(:
|
172
|
+
assert_requested(:post, "https://api.avvo.com/api/1/no_extensions")
|
163
173
|
|
164
|
-
stub_request(:get, "https://api.avvo.com/api/1/no_extensions/test")
|
174
|
+
stub_request(:get, "https://api.avvo.com/api/1/no_extensions/test")\
|
175
|
+
.to_return(:body => {:test => {:id => 1}}.to_json)
|
165
176
|
@object = ReactiveResource::NoExtension.get(:test)
|
166
177
|
assert_requested(:get, "https://api.avvo.com/api/1/no_extensions/test")
|
167
178
|
end
|
metadata
CHANGED
@@ -1,78 +1,69 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: reactive_resource
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 6
|
8
|
-
- 1
|
9
|
-
version: 0.6.1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.7.0
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Justin Weiss
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-06 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: activeresource
|
16
|
+
requirement: &70203673686620 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '3.1'
|
22
|
+
type: :runtime
|
22
23
|
prerelease: false
|
23
|
-
|
24
|
+
version_requirements: *70203673686620
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: activesupport
|
27
|
+
requirement: &70203673686140 !ruby/object:Gem::Requirement
|
24
28
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 2
|
30
|
-
- 3
|
31
|
-
- 10
|
32
|
-
version: 2.3.10
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.1'
|
33
33
|
type: :runtime
|
34
|
-
version_requirements: *id001
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: shoulda
|
37
34
|
prerelease: false
|
38
|
-
|
35
|
+
version_requirements: *70203673686140
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: shoulda
|
38
|
+
requirement: &70203673685680 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
|
-
requirements:
|
40
|
+
requirements:
|
41
41
|
- - ~>
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
segments:
|
44
|
-
- 2
|
45
|
-
- 11
|
46
|
-
- 3
|
42
|
+
- !ruby/object:Gem::Version
|
47
43
|
version: 2.11.3
|
48
44
|
type: :development
|
49
|
-
version_requirements: *id002
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
|
-
name: webmock
|
52
45
|
prerelease: false
|
53
|
-
|
46
|
+
version_requirements: *70203673685680
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: webmock
|
49
|
+
requirement: &70203673685220 !ruby/object:Gem::Requirement
|
54
50
|
none: false
|
55
|
-
requirements:
|
51
|
+
requirements:
|
56
52
|
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
segments:
|
59
|
-
- 1
|
60
|
-
- 6
|
61
|
-
- 1
|
53
|
+
- !ruby/object:Gem::Version
|
62
54
|
version: 1.6.1
|
63
55
|
type: :development
|
64
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70203673685220
|
65
58
|
description: ActiveRecord-like associations for ActiveResource
|
66
|
-
email:
|
59
|
+
email:
|
67
60
|
- justin@uberweiss.org
|
68
61
|
executables: []
|
69
|
-
|
70
62
|
extensions: []
|
71
|
-
|
72
63
|
extra_rdoc_files: []
|
73
|
-
|
74
|
-
files:
|
64
|
+
files:
|
75
65
|
- .gitignore
|
66
|
+
- .travis.yml
|
76
67
|
- Gemfile
|
77
68
|
- Gemfile.lock
|
78
69
|
- LICENSE
|
@@ -91,39 +82,37 @@ files:
|
|
91
82
|
- test/test_helper.rb
|
92
83
|
- test/test_objects.rb
|
93
84
|
- test/unit/base_test.rb
|
94
|
-
|
95
|
-
homepage: ""
|
85
|
+
homepage: ''
|
96
86
|
licenses: []
|
97
|
-
|
98
87
|
post_install_message:
|
99
88
|
rdoc_options: []
|
100
|
-
|
101
|
-
require_paths:
|
89
|
+
require_paths:
|
102
90
|
- lib
|
103
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
92
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
segments:
|
109
98
|
- 0
|
110
|
-
|
111
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
hash: -1783378317626943238
|
100
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
112
101
|
none: false
|
113
|
-
requirements:
|
114
|
-
- -
|
115
|
-
- !ruby/object:Gem::Version
|
116
|
-
|
102
|
+
requirements:
|
103
|
+
- - ! '>='
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
segments:
|
117
107
|
- 0
|
118
|
-
|
108
|
+
hash: -1783378317626943238
|
119
109
|
requirements: []
|
120
|
-
|
121
110
|
rubyforge_project: reactive_resource
|
122
|
-
rubygems_version: 1.
|
111
|
+
rubygems_version: 1.8.10
|
123
112
|
signing_key:
|
124
113
|
specification_version: 3
|
125
114
|
summary: ActiveRecord-like associations for ActiveResource
|
126
|
-
test_files:
|
115
|
+
test_files:
|
127
116
|
- test/test_helper.rb
|
128
117
|
- test/test_objects.rb
|
129
118
|
- test/unit/base_test.rb
|