remotely 0.1.2 → 0.1.3
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 +5 -0
- data/Gemfile +10 -0
- data/README.md +2 -0
- data/lib/remotely.rb +1 -0
- data/lib/remotely/http_methods.rb +3 -3
- data/lib/remotely/model.rb +2 -2
- data/lib/remotely/version.rb +1 -1
- data/remotely.gemspec +1 -5
- data/spec/remotely/model_spec.rb +4 -4
- data/spec/spec_helper.rb +3 -2
- data/spec/support/test_classes.rb +0 -4
- data/spec/support/webmock.rb +2 -2
- metadata +82 -78
data/.travis.yml
ADDED
data/Gemfile
CHANGED
data/README.md
CHANGED
data/lib/remotely.rb
CHANGED
@@ -82,7 +82,7 @@ module Remotely
|
|
82
82
|
path = expand(path)
|
83
83
|
klass = options.delete(:class)
|
84
84
|
parent = options.delete(:parent)
|
85
|
-
body = options.delete(:body) ||
|
85
|
+
body = options.delete(:body) || MultiJson.dump(options)
|
86
86
|
|
87
87
|
before_request(path, :post, body)
|
88
88
|
raise_if_html(app.connection.post(path, body))
|
@@ -98,7 +98,7 @@ module Remotely
|
|
98
98
|
#
|
99
99
|
def put(path, options={})
|
100
100
|
path = expand(path)
|
101
|
-
body = options.delete(:body) ||
|
101
|
+
body = options.delete(:body) || MultiJson.dump(options)
|
102
102
|
|
103
103
|
before_request(path, :put, body)
|
104
104
|
raise_if_html(app.connection.put(path, body))
|
@@ -173,7 +173,7 @@ module Remotely
|
|
173
173
|
def parse_response(response, klass=nil, parent=nil)
|
174
174
|
return false if response.status >= 400
|
175
175
|
|
176
|
-
body =
|
176
|
+
body = MultiJson.load(response.body) rescue nil
|
177
177
|
klass = (klass || self)
|
178
178
|
|
179
179
|
case body
|
data/lib/remotely/model.rb
CHANGED
@@ -209,7 +209,7 @@ module Remotely
|
|
209
209
|
url = new_record? ? uri : URL(uri, id)
|
210
210
|
|
211
211
|
resp = public_send(method, url, attrs)
|
212
|
-
body =
|
212
|
+
body = MultiJson.load(resp.body)
|
213
213
|
|
214
214
|
if resp.status == status && !body.nil?
|
215
215
|
self.attributes.merge!(body.symbolize_keys)
|
@@ -268,7 +268,7 @@ module Remotely
|
|
268
268
|
end
|
269
269
|
|
270
270
|
def to_json
|
271
|
-
|
271
|
+
MultiJson.dump(self.attributes)
|
272
272
|
end
|
273
273
|
|
274
274
|
private
|
data/lib/remotely/version.rb
CHANGED
data/remotely.gemspec
CHANGED
@@ -17,14 +17,10 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.add_development_dependency "rake"
|
19
19
|
gem.add_development_dependency "rspec", "~> 2.6.0"
|
20
|
-
gem.add_development_dependency "ZenTest"
|
21
|
-
gem.add_development_dependency "autotest-growl"
|
22
20
|
gem.add_development_dependency "webmock"
|
23
|
-
gem.add_development_dependency "ruby-debug19"
|
24
|
-
gem.add_development_dependency "ruby-debug-completion"
|
25
21
|
|
26
22
|
gem.add_dependency "activesupport"
|
27
23
|
gem.add_dependency "activemodel"
|
28
24
|
gem.add_dependency "faraday"
|
29
|
-
gem.add_dependency "
|
25
|
+
gem.add_dependency "multi_json"
|
30
26
|
end
|
data/spec/remotely/model_spec.rb
CHANGED
@@ -74,14 +74,14 @@ describe Remotely::Model do
|
|
74
74
|
end
|
75
75
|
|
76
76
|
it "returns an instance with errors when the creation fails" do
|
77
|
-
body =
|
77
|
+
body = MultiJson.dump({errors: {base: ["error"]}})
|
78
78
|
stub_request(:post, %r[/adventures]).to_return(status: 500, body: body)
|
79
79
|
Adventure.create(attrs).errors[:base].should include("error")
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
83
|
describe ".find_or_" do
|
84
|
-
let(:body) {
|
84
|
+
let(:body) { MultiJson.dump([{id: 1, name: "BubbleGum"}]) }
|
85
85
|
let(:stub_success) { stub_request(:get, "#{app}/adventures/search?name=BubbleGum").to_return(body: body) }
|
86
86
|
let(:stub_failure) { stub_request(:get, "#{app}/adventures/search?name=BubbleGum").to_return(body: "[]") }
|
87
87
|
|
@@ -176,7 +176,7 @@ describe Remotely::Model do
|
|
176
176
|
end
|
177
177
|
|
178
178
|
it "sets errors on a failure" do
|
179
|
-
body =
|
179
|
+
body = MultiJson.dump({errors: {base: ["error"]}})
|
180
180
|
stub_request(:post, %r(/adventures)).to_return(status: 409, body: body)
|
181
181
|
adventure.save
|
182
182
|
adventure.errors.should_not be_empty
|
@@ -216,7 +216,7 @@ describe Remotely::Model do
|
|
216
216
|
end
|
217
217
|
|
218
218
|
it "sets errors on failure" do
|
219
|
-
body =
|
219
|
+
body = MultiJson.dump({errors: {base: ["error"]}})
|
220
220
|
stub_request(:put, %r[/adventures/1]).to_return(status: 500, body: body)
|
221
221
|
subject.update_attributes(updates)
|
222
222
|
subject.errors[:base].should include("error")
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require "remotely"
|
2
2
|
require 'webmock/rspec'
|
3
|
-
require "yajl"
|
4
3
|
WebMock.disable_net_connect!
|
5
4
|
require "support/webmock"
|
6
5
|
require "support/test_classes"
|
@@ -8,9 +7,11 @@ require "support/test_classes"
|
|
8
7
|
RSpec.configure do |c|
|
9
8
|
c.before do
|
10
9
|
WebmockHelpers.stub!
|
10
|
+
Remotely.reset!
|
11
|
+
Remotely.configure { app :adventure_app, "http://localhost:1234" }
|
11
12
|
end
|
12
13
|
|
13
14
|
def to_json(obj)
|
14
|
-
|
15
|
+
MultiJson.dump(obj)
|
15
16
|
end
|
16
17
|
end
|
data/spec/support/webmock.rb
CHANGED
@@ -31,8 +31,8 @@ module WebmockHelpers
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def stub(method, url, response={})
|
34
|
-
unless response.is_a?(Proc)
|
35
|
-
response[:body] =
|
34
|
+
unless response.is_a?(Proc) || response[:body].is_a?(Proc)
|
35
|
+
response[:body] = MultiJson.dump(response[:body])
|
36
36
|
response[:headers] = { "Content-Type" => "application/json" }
|
37
37
|
end
|
38
38
|
stub_request(method, url).to_return(response)
|
metadata
CHANGED
@@ -1,137 +1,140 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remotely
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matte Noble
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ! '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: !binary |-
|
21
|
+
MA==
|
17
22
|
none: false
|
23
|
+
requirement: !ruby/object:Gem::Requirement
|
18
24
|
requirements:
|
19
25
|
- - ! '>='
|
20
26
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
22
|
-
|
27
|
+
version: !binary |-
|
28
|
+
MA==
|
29
|
+
none: false
|
23
30
|
prerelease: false
|
24
|
-
|
31
|
+
type: :development
|
25
32
|
- !ruby/object:Gem::Dependency
|
26
33
|
name: rspec
|
27
|
-
|
28
|
-
none: false
|
34
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
35
|
requirements:
|
30
36
|
- - ~>
|
31
37
|
- !ruby/object:Gem::Version
|
32
38
|
version: 2.6.0
|
33
|
-
type: :development
|
34
|
-
prerelease: false
|
35
|
-
version_requirements: *2169407000
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: ZenTest
|
38
|
-
requirement: &2169400760 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
40
41
|
requirements:
|
41
|
-
- -
|
42
|
+
- - ~>
|
42
43
|
- !ruby/object:Gem::Version
|
43
|
-
version:
|
44
|
-
type: :development
|
45
|
-
prerelease: false
|
46
|
-
version_requirements: *2169400760
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: autotest-growl
|
49
|
-
requirement: &2169400280 !ruby/object:Gem::Requirement
|
44
|
+
version: 2.6.0
|
50
45
|
none: false
|
51
|
-
requirements:
|
52
|
-
- - ! '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
type: :development
|
56
46
|
prerelease: false
|
57
|
-
|
47
|
+
type: :development
|
58
48
|
- !ruby/object:Gem::Dependency
|
59
49
|
name: webmock
|
60
|
-
|
61
|
-
none: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
62
51
|
requirements:
|
63
52
|
- - ! '>='
|
64
53
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
66
|
-
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *2169399780
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: ruby-debug19
|
71
|
-
requirement: &2169399220 !ruby/object:Gem::Requirement
|
54
|
+
version: !binary |-
|
55
|
+
MA==
|
72
56
|
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
73
58
|
requirements:
|
74
59
|
- - ! '>='
|
75
60
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
77
|
-
|
61
|
+
version: !binary |-
|
62
|
+
MA==
|
63
|
+
none: false
|
78
64
|
prerelease: false
|
79
|
-
|
65
|
+
type: :development
|
80
66
|
- !ruby/object:Gem::Dependency
|
81
|
-
name:
|
82
|
-
|
83
|
-
none: false
|
67
|
+
name: activesupport
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
84
69
|
requirements:
|
85
70
|
- - ! '>='
|
86
71
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
88
|
-
|
89
|
-
prerelease: false
|
90
|
-
version_requirements: *2169398540
|
91
|
-
- !ruby/object:Gem::Dependency
|
92
|
-
name: activesupport
|
93
|
-
requirement: &2169397720 !ruby/object:Gem::Requirement
|
72
|
+
version: !binary |-
|
73
|
+
MA==
|
94
74
|
none: false
|
75
|
+
requirement: !ruby/object:Gem::Requirement
|
95
76
|
requirements:
|
96
77
|
- - ! '>='
|
97
78
|
- !ruby/object:Gem::Version
|
98
|
-
version:
|
99
|
-
|
79
|
+
version: !binary |-
|
80
|
+
MA==
|
81
|
+
none: false
|
100
82
|
prerelease: false
|
101
|
-
|
83
|
+
type: :runtime
|
102
84
|
- !ruby/object:Gem::Dependency
|
103
85
|
name: activemodel
|
104
|
-
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: !binary |-
|
91
|
+
MA==
|
105
92
|
none: false
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
106
94
|
requirements:
|
107
95
|
- - ! '>='
|
108
96
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
110
|
-
|
97
|
+
version: !binary |-
|
98
|
+
MA==
|
99
|
+
none: false
|
111
100
|
prerelease: false
|
112
|
-
|
101
|
+
type: :runtime
|
113
102
|
- !ruby/object:Gem::Dependency
|
114
103
|
name: faraday
|
115
|
-
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ! '>='
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: !binary |-
|
109
|
+
MA==
|
116
110
|
none: false
|
111
|
+
requirement: !ruby/object:Gem::Requirement
|
117
112
|
requirements:
|
118
113
|
- - ! '>='
|
119
114
|
- !ruby/object:Gem::Version
|
120
|
-
version:
|
121
|
-
|
115
|
+
version: !binary |-
|
116
|
+
MA==
|
117
|
+
none: false
|
122
118
|
prerelease: false
|
123
|
-
|
119
|
+
type: :runtime
|
124
120
|
- !ruby/object:Gem::Dependency
|
125
|
-
name:
|
126
|
-
|
121
|
+
name: multi_json
|
122
|
+
version_requirements: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: !binary |-
|
127
|
+
MA==
|
127
128
|
none: false
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
128
130
|
requirements:
|
129
131
|
- - ! '>='
|
130
132
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
132
|
-
|
133
|
+
version: !binary |-
|
134
|
+
MA==
|
135
|
+
none: false
|
133
136
|
prerelease: false
|
134
|
-
|
137
|
+
type: :runtime
|
135
138
|
description: Remote API based model associations.
|
136
139
|
email:
|
137
140
|
- me@mattenoble.com
|
@@ -142,8 +145,8 @@ files:
|
|
142
145
|
- .autotest
|
143
146
|
- .gitignore
|
144
147
|
- .rspec
|
148
|
+
- .travis.yml
|
145
149
|
- Gemfile
|
146
|
-
- Gemfile.lock
|
147
150
|
- README.md
|
148
151
|
- Rakefile
|
149
152
|
- lib/remotely.rb
|
@@ -167,26 +170,28 @@ files:
|
|
167
170
|
- spec/support/webmock.rb
|
168
171
|
homepage: ''
|
169
172
|
licenses: []
|
170
|
-
post_install_message:
|
173
|
+
post_install_message:
|
171
174
|
rdoc_options: []
|
172
175
|
require_paths:
|
173
176
|
- lib
|
174
177
|
required_ruby_version: !ruby/object:Gem::Requirement
|
175
|
-
none: false
|
176
178
|
requirements:
|
177
179
|
- - ! '>='
|
178
180
|
- !ruby/object:Gem::Version
|
179
|
-
version:
|
180
|
-
|
181
|
+
version: !binary |-
|
182
|
+
MA==
|
181
183
|
none: false
|
184
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
182
185
|
requirements:
|
183
186
|
- - ! '>='
|
184
187
|
- !ruby/object:Gem::Version
|
185
|
-
version:
|
188
|
+
version: !binary |-
|
189
|
+
MA==
|
190
|
+
none: false
|
186
191
|
requirements: []
|
187
|
-
rubyforge_project:
|
188
|
-
rubygems_version: 1.8.
|
189
|
-
signing_key:
|
192
|
+
rubyforge_project:
|
193
|
+
rubygems_version: 1.8.24
|
194
|
+
signing_key:
|
190
195
|
specification_version: 3
|
191
196
|
summary: Remote API based model associations.
|
192
197
|
test_files:
|
@@ -200,4 +205,3 @@ test_files:
|
|
200
205
|
- spec/spec_helper.rb
|
201
206
|
- spec/support/test_classes.rb
|
202
207
|
- spec/support/webmock.rb
|
203
|
-
has_rdoc:
|