remotable 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -144,7 +144,7 @@ module Remotable
144
144
  # so you can use the remoted record in associations.
145
145
  def instantiate(*args)
146
146
  record = super
147
- if record.expired? && !Remotable.nosync?
147
+ if record.expired? && !record.nosync?
148
148
  record.pull_remote_data!
149
149
  record = nil if record.destroyed?
150
150
  end
@@ -248,6 +248,7 @@ module Remotable
248
248
  end
249
249
 
250
250
  def remote_path_for_composite_key(route, local_key, values)
251
+ values.flatten!
251
252
  unless values.length == local_key.length
252
253
  raise ArgumentError, "local_key has #{local_key.length} attributes but values has #{values.length}"
253
254
  end
@@ -348,7 +349,11 @@ module Remotable
348
349
  private
349
350
 
350
351
  def fetch_value
351
- self[local_key]
352
+ if local_key.is_a?(Array)
353
+ local_key.map(&method(:send))
354
+ else
355
+ send(local_key)
356
+ end
352
357
  end
353
358
 
354
359
  def fetch_remote_resource
@@ -397,7 +402,8 @@ module Remotable
397
402
  end
398
403
 
399
404
  def destroy_remote_resource
400
- if remote_resource && remote_resource.destroy
405
+ return nil unless remote_resource
406
+ if remote_resource.destroy
401
407
  true
402
408
  else
403
409
  merge_remote_errors(remote_resource.errors)
@@ -5,18 +5,11 @@ require "active_support/concern"
5
5
  module ActiveResourceFixes
6
6
  extend ActiveSupport::Concern
7
7
 
8
- # ActiveResource hacks method_missing without hacking respond_to?
9
- # In fact, it responds to any method that ends in an equals sign.
10
- # It also responds to any method that matches an attribute name.
11
- def respond_to?(method_symbol, include_private=false)
12
- method_name = method_symbol.to_s
13
- if method_name =~ /\w+=/
14
- true
15
- elsif attributes.include?(method_name)
16
- true
17
- else
18
- super(method_symbol, include_private)
19
- end
8
+
9
+ # ! ActiveModel::AttributeMethods assumes that :attribute is the target
10
+ # for attribute lookup. ActiveResource doesn't define that method.
11
+ def attribute(method)
12
+ attributes[method]
20
13
  end
21
14
 
22
15
 
@@ -43,6 +36,20 @@ end
43
36
 
44
37
 
45
38
  module ActiveResourceFixes30
39
+
40
+ # ActiveResource hacks method_missing without hacking respond_to?
41
+ # In fact, it responds to any method that ends in an equals sign.
42
+ # It also responds to any method that matches an attribute name.
43
+ def respond_to?(method_symbol, include_private=false)
44
+ method_name = method_symbol.to_s
45
+ if method_name =~ /\w+=/
46
+ true
47
+ elsif attributes.include?(method_name)
48
+ true
49
+ else
50
+ super(method_symbol, include_private)
51
+ end
52
+ end
46
53
 
47
54
  # ! in this method, don't check the Content-Type header: rack doesn't always return it
48
55
  def load_attributes_from_response(response)
@@ -56,6 +63,20 @@ end
56
63
 
57
64
  module ActiveResourceFixes31
58
65
 
66
+ # ActiveResource hacks method_missing without hacking respond_to?
67
+ # In fact, it responds to any method that ends in an equals sign.
68
+ # It also responds to any method that matches an attribute name.
69
+ def respond_to?(method_symbol, include_private=false)
70
+ method_name = method_symbol.to_s
71
+ if method_name =~ /\w+=/
72
+ true
73
+ elsif attributes.include?(method_name)
74
+ true
75
+ else
76
+ super(method_symbol, include_private)
77
+ end
78
+ end
79
+
59
80
  # ! in this method, don't check the Content-Type header: rack doesn't always return it
60
81
  def load_attributes_from_response(response)
61
82
  if !response.body.nil? && response.body.strip.size > 0
@@ -66,8 +87,9 @@ module ActiveResourceFixes31
66
87
 
67
88
  end
68
89
 
69
-
70
- if Rails.version < '3.1'
90
+ if Rails.version >= '3.2'
91
+ #
92
+ elsif Rails.version < '3.1'
71
93
  ActiveResource::Base.send(:include, ActiveResourceFixes30)
72
94
  else
73
95
  ActiveResource::Base.send(:include, ActiveResourceFixes31)
@@ -1,3 +1,3 @@
1
1
  module Remotable
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -27,7 +27,7 @@ class RemotableTest < ActiveSupport::TestCase
27
27
  end
28
28
 
29
29
  test "should be able to generate paths for composite keys" do
30
- assert_equal "groups/5/tenants/test", RemoteWithCompositeKey.remote_path_for([:group_id, :slug], 5, "test")
30
+ assert_equal "groups/5/tenants/test", RemoteWithCompositeKey.remote_path_for([:group_id, :slug], [5, "test"])
31
31
  end
32
32
 
33
33
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remotable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-12 00:00:00.000000000 Z
12
+ date: 2012-10-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activeresource
16
- requirement: &2156933760 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156933760
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: activerecord
27
- requirement: &2156930420 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2156930420
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: activesupport
38
- requirement: &2156927360 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *2156927360
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: rails
49
- requirement: &2156946400 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *2156946400
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: minitest
60
- requirement: &2156943380 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *2156943380
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: turn
71
- requirement: &2156962240 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *2156962240
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: factory_girl
82
- requirement: &2156969980 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *2156969980
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: sqlite3
93
- requirement: &2156968120 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *2156968120
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: active_resource_simulator
104
- requirement: &2156965300 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,10 +149,15 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *2156965300
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: simplecov
115
- requirement: &2156982000 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
116
161
  none: false
117
162
  requirements:
118
163
  - - ! '>='
@@ -120,10 +165,15 @@ dependencies:
120
165
  version: '0'
121
166
  type: :development
122
167
  prerelease: false
123
- version_requirements: *2156982000
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
124
174
  - !ruby/object:Gem::Dependency
125
175
  name: rr
126
- requirement: &2156980560 !ruby/object:Gem::Requirement
176
+ requirement: !ruby/object:Gem::Requirement
127
177
  none: false
128
178
  requirements:
129
179
  - - ! '>='
@@ -131,10 +181,15 @@ dependencies:
131
181
  version: '0'
132
182
  type: :development
133
183
  prerelease: false
134
- version_requirements: *2156980560
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
135
190
  - !ruby/object:Gem::Dependency
136
191
  name: database_cleaner
137
- requirement: &2156979980 !ruby/object:Gem::Requirement
192
+ requirement: !ruby/object:Gem::Requirement
138
193
  none: false
139
194
  requirements:
140
195
  - - ! '>='
@@ -142,7 +197,12 @@ dependencies:
142
197
  version: '0'
143
198
  type: :development
144
199
  prerelease: false
145
- version_requirements: *2156979980
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
146
206
  description: Remotable keeps a locally-stored ActiveRecord synchronized with a remote
147
207
  resource.
148
208
  email:
@@ -194,7 +254,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
254
  version: '0'
195
255
  segments:
196
256
  - 0
197
- hash: -2708411385846481518
257
+ hash: 3994390182043534799
198
258
  required_rubygems_version: !ruby/object:Gem::Requirement
199
259
  none: false
200
260
  requirements:
@@ -203,10 +263,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
263
  version: '0'
204
264
  segments:
205
265
  - 0
206
- hash: -2708411385846481518
266
+ hash: 3994390182043534799
207
267
  requirements: []
208
268
  rubyforge_project: remotable
209
- rubygems_version: 1.8.15
269
+ rubygems_version: 1.8.23
210
270
  signing_key:
211
271
  specification_version: 3
212
272
  summary: Binds an ActiveRecord model to a remote resource and keeps the two synchronized