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.
@@ -0,0 +1,5 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 1.9.2
5
+ - jruby-19mode
data/Gemfile CHANGED
@@ -1,2 +1,12 @@
1
1
  source :rubygems
2
2
  gemspec
3
+
4
+ group :development, :test do
5
+ platforms :mri do
6
+ gem "debugger"
7
+ end
8
+
9
+ platforms :jruby do
10
+ gem "ruby-debug"
11
+ end
12
+ end
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Remotely
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/wegowise/remotely.png)](http://travis-ci.org/wegowise/remotely)
4
+
3
5
  Remotely lets you specify associations for your models that should
4
6
  be fetched from a remote API instead of the database.
5
7
 
@@ -4,6 +4,7 @@ require "active_support/inflector"
4
4
  require "active_support/concern"
5
5
  require "active_support/core_ext/hash"
6
6
  require "active_model"
7
+ require "multi_json"
7
8
 
8
9
  require "remotely/ext/url"
9
10
  require "remotely/application"
@@ -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) || Yajl::Encoder.encode(options)
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) || Yajl::Encoder.encode(options)
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 = Yajl::Parser.parse(response.body) rescue nil
176
+ body = MultiJson.load(response.body) rescue nil
177
177
  klass = (klass || self)
178
178
 
179
179
  case body
@@ -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 = Yajl::Parser.parse(resp.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
- Yajl::Encoder.encode(self.attributes)
271
+ MultiJson.dump(self.attributes)
272
272
  end
273
273
 
274
274
  private
@@ -1,3 +1,3 @@
1
1
  module Remotely
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
@@ -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 "yajl-ruby"
25
+ gem.add_dependency "multi_json"
30
26
  end
@@ -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 = Yajl.dump({errors: {base: ["error"]}})
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) { Yajl::Encoder.encode([{id: 1, name: "BubbleGum"}]) }
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 = Yajl.dump({errors: {base: ["error"]}})
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 = Yajl.dump({errors: {base: ["error"]}})
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")
@@ -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
- Yajl::Encoder.encode(obj)
15
+ MultiJson.dump(obj)
15
16
  end
16
17
  end
@@ -1,9 +1,5 @@
1
1
  require "ostruct"
2
2
 
3
- Remotely.configure do
4
- app :adventure_app, "http://localhost:1234"
5
- end
6
-
7
3
  class BaseTestClass < OpenStruct
8
4
  extend ActiveModel::Naming
9
5
  include Remotely::Associations
@@ -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] = Yajl::Encoder.encode(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
- version: 0.1.2
5
- prerelease:
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-01-05 00:00:00.000000000Z
12
+ date: 2012-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
16
- requirement: &2169407720 !ruby/object:Gem::Requirement
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: '0'
22
- type: :development
27
+ version: !binary |-
28
+ MA==
29
+ none: false
23
30
  prerelease: false
24
- version_requirements: *2169407720
31
+ type: :development
25
32
  - !ruby/object:Gem::Dependency
26
33
  name: rspec
27
- requirement: &2169407000 !ruby/object:Gem::Requirement
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: '0'
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
- version_requirements: *2169400280
47
+ type: :development
58
48
  - !ruby/object:Gem::Dependency
59
49
  name: webmock
60
- requirement: &2169399780 !ruby/object:Gem::Requirement
61
- none: false
50
+ version_requirements: !ruby/object:Gem::Requirement
62
51
  requirements:
63
52
  - - ! '>='
64
53
  - !ruby/object:Gem::Version
65
- version: '0'
66
- type: :development
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: '0'
77
- type: :development
61
+ version: !binary |-
62
+ MA==
63
+ none: false
78
64
  prerelease: false
79
- version_requirements: *2169399220
65
+ type: :development
80
66
  - !ruby/object:Gem::Dependency
81
- name: ruby-debug-completion
82
- requirement: &2169398540 !ruby/object:Gem::Requirement
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: '0'
88
- type: :development
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: '0'
99
- type: :runtime
79
+ version: !binary |-
80
+ MA==
81
+ none: false
100
82
  prerelease: false
101
- version_requirements: *2169397720
83
+ type: :runtime
102
84
  - !ruby/object:Gem::Dependency
103
85
  name: activemodel
104
- requirement: &2169397260 !ruby/object:Gem::Requirement
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: '0'
110
- type: :runtime
97
+ version: !binary |-
98
+ MA==
99
+ none: false
111
100
  prerelease: false
112
- version_requirements: *2169397260
101
+ type: :runtime
113
102
  - !ruby/object:Gem::Dependency
114
103
  name: faraday
115
- requirement: &2169396740 !ruby/object:Gem::Requirement
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: '0'
121
- type: :runtime
115
+ version: !binary |-
116
+ MA==
117
+ none: false
122
118
  prerelease: false
123
- version_requirements: *2169396740
119
+ type: :runtime
124
120
  - !ruby/object:Gem::Dependency
125
- name: yajl-ruby
126
- requirement: &2169395480 !ruby/object:Gem::Requirement
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: '0'
132
- type: :runtime
133
+ version: !binary |-
134
+ MA==
135
+ none: false
133
136
  prerelease: false
134
- version_requirements: *2169395480
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: '0'
180
- required_rubygems_version: !ruby/object:Gem::Requirement
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: '0'
188
+ version: !binary |-
189
+ MA==
190
+ none: false
186
191
  requirements: []
187
- rubyforge_project:
188
- rubygems_version: 1.8.10
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: