acfs 0.11.0 → 0.12.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69903ec6f49f6fb0d192c60aa302ddc9ba16f940
4
- data.tar.gz: bb15a106632b4d5f3681d829bee1b4e547d61039
3
+ metadata.gz: c960a6ef96c4fb47b25a4cb7e94a2bbab5a84b06
4
+ data.tar.gz: 490d2fcd1442773d5c35e0c423e28597ffa33fcf
5
5
  SHA512:
6
- metadata.gz: 4acac2d53426422d60c59502fde95f17893fabced18c70d9236c3473c1250be5ac492f8ff6271db2073340af96725dee05748a6a5de43d9f92fa330fb3ef060d
7
- data.tar.gz: d4aefee793caaad3a20afcc1c703b07882492805ad80ce70efb9fafda71700f425ed2246e8964e03c839cfd1f9ebe6da255872316afceabe15bea413161ad518
6
+ metadata.gz: 3f63ede8fdcb5bcd754f5b090bffcfbcf904cd167af88d68fc7d21434f78a65685f1b6f67dd3b8d3ceedbc67ee245ce46c135b25cb2a295175df9020f6e707d8
7
+ data.tar.gz: a9e72d86a83711bfdd87a15deea1e31cde0cfbf29a1555f83b0608cacdfa14fb6ffaacdd10db7ca57cedad15704cabec3bbe1e1dbf572e7e0b4158ed573b31da
@@ -2,6 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 1.9.3
5
+ - jruby
5
6
 
6
7
  gemfile:
7
8
  - gemfiles/Gemfile.rails-3-2
data/Gemfile CHANGED
@@ -1,4 +1,19 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in acfs.gemspec
4
- gemspec
4
+ gemroot = File.dirname File.absolute_path __FILE__
5
+ gemspec path: gemroot
6
+
7
+ # Development gems
8
+ #
9
+ gem 'webmock', '~> 1.7'
10
+ gem 'rake'
11
+ gem 'rspec'
12
+ gem 'guard-rspec'
13
+ gem 'coveralls'
14
+
15
+
16
+ # Platform specific development dependencies
17
+ #
18
+ gem 'msgpack', platform: :ruby
19
+ gem 'msgpack-jruby', require: 'msgpack', platform: :jruby
data/README.md CHANGED
@@ -13,7 +13,7 @@ level and automatic request queuing and parallel processing. See Usage for more.
13
13
 
14
14
  Add this line to your application's Gemfile:
15
15
 
16
- gem 'acfs', '~> 0.11.0'
16
+ gem 'acfs', '~> 0.12.0'
17
17
 
18
18
  **Note:** Acfs is under development. I'll try to avoid changes to the public
19
19
  API but internal APIs may change quite often.
@@ -25,10 +25,4 @@ Gem::Specification.new do |spec|
25
25
  spec.add_runtime_dependency 'typhoeus'
26
26
 
27
27
  spec.add_development_dependency 'bundler', '~> 1.3'
28
- spec.add_development_dependency 'webmock', '~> 1.7'
29
- spec.add_development_dependency 'rake'
30
- spec.add_development_dependency 'rspec'
31
- spec.add_development_dependency 'guard-rspec'
32
- spec.add_development_dependency 'coveralls'
33
- spec.add_development_dependency 'msgpack'
34
28
  end
@@ -1,7 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in acfs.gemspec
4
- gemspec path: '../'
3
+ # Load root Gemfile
4
+ self.instance_eval Bundler.read_file 'Gemfile'
5
5
 
6
6
  gem 'activesupport', '~> 3.2.0'
7
7
  gem 'activemodel', '~> 3.2.0'
@@ -1,8 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in acfs.gemspec
4
- gemspec path: '../'
3
+ # Load root Gemfile
4
+ self.instance_eval Bundler.read_file 'Gemfile'
5
5
 
6
- gem 'activesupport', '~> 4.0.0.beta1'
7
- gem 'activemodel', '~> 4.0.0.beta1'
8
- gem 'actionpack', '~> 4.0.0.beta1'
6
+ gem 'activesupport', '~> 4.0.0.rc1'
7
+ gem 'activemodel', '~> 4.0.0.rc1'
8
+ gem 'actionpack', '~> 4.0.0.rc1'
@@ -10,8 +10,8 @@ module Acfs
10
10
  class ErroneousResponse < Error
11
11
  attr_accessor :response
12
12
 
13
- def initialize(response)
14
- self.response = response
13
+ def initialize(data = {})
14
+ self.response = data[:response]
15
15
  end
16
16
  end
17
17
 
@@ -20,4 +20,12 @@ module Acfs
20
20
  class ResourceNotFound < ErroneousResponse
21
21
  end
22
22
 
23
+ class InvalidResource < ErroneousResponse
24
+ attr_accessor :errors
25
+
26
+ def initialize(data)
27
+ self.errors = data[:errors]
28
+ super
29
+ end
30
+ end
23
31
  end
@@ -14,7 +14,7 @@ module Acfs
14
14
  CONTENT_TYPES = %w(application/x-msgpack)
15
15
 
16
16
  def response(response, nxt)
17
- response.data = ::MessagePack.load(response.body) if message_pack?(response)
17
+ response.data = ::MessagePack.unpack(response.body) if message_pack?(response)
18
18
  nxt.call response
19
19
  end
20
20
 
@@ -47,10 +47,18 @@ module Acfs
47
47
  false
48
48
  end
49
49
 
50
- def save!(*) # :nodoc:
51
- request = new? ? create_request : put_request
50
+ def save!(opts = {}) # :nodoc:
51
+ #raise ::Acfs::InvalidResource errors: errors.to_a unless valid?
52
+
53
+ opts[:data] = attributes unless opts[:data]
54
+
55
+ request = new? ? create_request(opts) : put_request(opts)
52
56
  request.on_complete do |response|
53
- update_with response.data
57
+ if response.success?
58
+ update_with response.data
59
+ else
60
+ self.class.raise! response
61
+ end
54
62
  end
55
63
 
56
64
  self.class.service.run request
@@ -58,17 +66,27 @@ module Acfs
58
66
 
59
67
  module ClassMethods
60
68
 
61
- # Create a new resource sending given data.
69
+ # Create a new resource sending given data. If resource cannot be
70
+ # created an error will be thrown.
71
+ #
72
+ def create!(data, opts = {})
73
+ new.tap do |model|
74
+ model.save! opts.merge data: data
75
+ end
76
+ end
77
+
78
+ # Create a new resource sending given data. If resource cannot be
79
+ # create model will be returned and error hash contains response
80
+ # errors if available.
62
81
  #
63
82
  def create(data, opts = {})
64
83
  model = new
65
- request = Acfs::Request.new url, method: :post, data: data
66
- request.on_complete do |response|
67
- model.attributes = response.data
68
- model.loaded!
84
+ model.save! opts.merge data: data
85
+ model
86
+ rescue InvalidResource => err
87
+ (err.errors || []).each do |field, errors|
88
+ model.errors.set field, errors
69
89
  end
70
-
71
- service.run request
72
90
  model
73
91
  end
74
92
  end
@@ -79,12 +97,12 @@ module Acfs
79
97
  loaded!
80
98
  end
81
99
 
82
- def create_request
83
- Acfs::Request.new self.class.url, method: :post, data: attributes
100
+ def create_request(opts = {})
101
+ Acfs::Request.new self.class.url, method: :post, data: opts[:data]
84
102
  end
85
103
 
86
- def put_request
87
- Acfs::Request.new url, method: :put, data: attributes
104
+ def put_request(opts = {})
105
+ Acfs::Request.new url, method: :put, data: opts[:data]
88
106
  end
89
107
  end
90
108
  end
@@ -53,6 +53,17 @@ module Acfs::Model
53
53
  end
54
54
  alias :where :all
55
55
 
56
+ def raise!(response)
57
+ case response.code
58
+ when 404
59
+ raise ::Acfs::ResourceNotFound.new response: response
60
+ when 422
61
+ raise ::Acfs::InvalidResource.new response: response, errors: response.data['errors']
62
+ else
63
+ raise ::Acfs::ErroneousResponse.new response: response
64
+ end
65
+ end
66
+
56
67
  private
57
68
  def find_single(id, opts, &block)
58
69
  model = self.new
@@ -63,7 +74,7 @@ module Acfs::Model
63
74
  model.loaded!
64
75
  block.call model unless block.nil?
65
76
  else
66
- raise_error_for response
77
+ raise! response
67
78
  end
68
79
  end
69
80
  service.queue request
@@ -85,15 +96,6 @@ module Acfs::Model
85
96
  end
86
97
  end
87
98
  end
88
-
89
- def raise_error_for(response)
90
- case response.code
91
- when 404
92
- raise ::Acfs::ResourceNotFound.new response
93
- else
94
- raise ::Acfs::ErroneousResponse.new response
95
- end
96
- end
97
99
  end
98
100
  end
99
101
  end
@@ -1,7 +1,7 @@
1
1
  module Acfs
2
2
  module VERSION
3
3
  MAJOR = 0
4
- MINOR = 11
4
+ MINOR = 12
5
5
  PATCH = 0
6
6
  STAGE = nil
7
7
 
@@ -14,7 +14,7 @@ describe Acfs::Middleware::MessagePackDecoder do
14
14
 
15
15
  context 'with Message Pack response' do
16
16
  let(:headers) { { 'Content-Type' => 'application/x-msgpack' } }
17
- let(:body) { MessagePack.dump data }
17
+ let(:body) { MessagePack.pack data }
18
18
 
19
19
  it 'should decode body data' do
20
20
  request.complete! response
@@ -23,15 +23,6 @@ describe Acfs::Middleware::MessagePackDecoder do
23
23
  end
24
24
  end
25
25
 
26
- context 'with invalid response' do
27
- let(:headers) { { 'Content-Type' => 'application/x-msgpack' } }
28
- let(:body) { MessagePack.dump(data)[4..-4] }
29
-
30
- it 'should raise an error' do
31
- expect { request.complete! response }.to raise_error(MessagePack::MalformedFormatError)
32
- end
33
- end
34
-
35
26
  context 'without Message Pack response' do
36
27
  let(:headers) { { 'Content-Type' => 'application/text' } }
37
28
  let(:body) { data.to_json }
@@ -3,13 +3,8 @@ require 'spec_helper'
3
3
  describe Acfs::Model::Dirty do
4
4
  let(:model) { MyUser.new }
5
5
  before do
6
- stub_request(:get, "http://users.example.org/users/1").to_return(
7
- body: MessagePack.dump({ id: 1, name: 'Anon', age: 12 }),
8
- headers: {'Content-Type' => 'application/x-msgpack'})
9
-
10
- stub_request(:post, 'http://users.example.org/users').to_return(
11
- body: MessagePack.dump({ id: 5, name: 'dhh', age: 12 }),
12
- headers: {'Content-Type' => 'application/x-msgpack'})
6
+ stub_request(:get, "http://users.example.org/users/1").to_return response({ id: 1, name: 'Anon', age: 12 })
7
+ stub_request(:post, 'http://users.example.org/users').to_return response({ id: 5, name: 'dhh', age: 12 })
13
8
  end
14
9
 
15
10
  it 'includes ActiveModel::Dirty' do
@@ -3,9 +3,7 @@ require 'spec_helper'
3
3
  describe Acfs::Model::Loadable do
4
4
  let(:model) { MyUser.find 1 }
5
5
  before do
6
- stub_request(:get, "http://users.example.org/users/1").to_return(
7
- body: MessagePack.dump({ id: 1, name: "Anon", age: 12 }),
8
- headers: {'Content-Type' => 'application/x-msgpack'})
6
+ stub_request(:get, "http://users.example.org/users/1").to_return response({ id: 1, name: "Anon", age: 12 })
9
7
  end
10
8
 
11
9
  describe '#loaded?' do
@@ -3,9 +3,7 @@ require 'spec_helper'
3
3
  describe Acfs::Model::Locatable do
4
4
  let(:model) { MyUser }
5
5
  before do
6
- stub_request(:get, "http://users.example.org/users/1").to_return(
7
- body: MessagePack.dump({ id: 1, name: "Anon", age: 12 }),
8
- headers: {'Content-Type' => 'application/x-msgpack'})
6
+ stub_request(:get, "http://users.example.org/users/1").to_return response({ id: 1, name: "Anon", age: 12 })
9
7
  end
10
8
 
11
9
  describe '.url' do
@@ -3,20 +3,28 @@ require 'spec_helper'
3
3
  describe Acfs::Model::Persistence do
4
4
  let(:model_class) { MyUser }
5
5
  before do
6
- @get_stub = stub_request(:get, "http://users.example.org/users/1").to_return(
7
- body: MessagePack.dump({ id: 1, name: "Anon", age: 12 }),
8
- headers: {'Content-Type' => 'application/x-msgpack'})
6
+ @get_stub = stub_request(:get, "http://users.example.org/users/1").to_return response({ id: 1, name: "Anon", age: 12 })
9
7
 
10
8
  @patch_stub = stub_request(:put, 'http://users.example.org/users/1')
11
9
  .with(
12
10
  body: '{"id":1,"name":"Idefix","age":12}')
13
- .to_return(
14
- body: MessagePack.dump({ id: 1, name: 'Idefix', age: 12 }),
15
- headers: {'Content-Type' => 'application/x-msgpack'})
11
+ .to_return response({ id: 1, name: 'Idefix', age: 12 })
16
12
 
17
- @post_stub = stub_request(:post, 'http://users.example.org/users').to_return(
18
- body: MessagePack.dump({ id: 5, name: 'Idefix', age: 12 }),
19
- headers: {'Content-Type' => 'application/x-msgpack'})
13
+ @post_stub = stub_request(:post, 'http://users.example.org/users')
14
+ .with(body: '{"id":null,"name":"Idefix","age":12}')
15
+ .to_return response({ id: 5, name: 'Idefix', age: 12 })
16
+
17
+ stub_request(:post, 'http://users.example.org/users')
18
+ .with(body: '{"id":null,"name":"Anon","age":null}')
19
+ .to_return response({ id: 5, name: 'Anon', age: 12 })
20
+
21
+ stub_request(:post, 'http://users.example.org/users')
22
+ .with(body: '{"name":"Idefix","age":12}')
23
+ .to_return response({ id: 5, name: 'Idefix', age: 12 })
24
+
25
+ stub_request(:post, 'http://users.example.org/users')
26
+ .with(body: '{"age":12}')
27
+ .to_return response({ errors: { name: [ 'required' ] }}, status: 422)
20
28
  end
21
29
 
22
30
  context 'new model' do
@@ -77,4 +85,62 @@ describe Acfs::Model::Persistence do
77
85
  it { expect(model).to_not be_new }
78
86
  end
79
87
  end
88
+
89
+ describe '.create!' do
90
+ context 'with valid data' do
91
+ let(:data) { { name: 'Idefix', age: 12 } }
92
+
93
+ it 'should create new resource' do
94
+ model = model_class.create! data
95
+ expect(model.name).to be == 'Idefix'
96
+ expect(model.age).to be == 12
97
+ end
98
+
99
+ it 'should be persisted' do
100
+ model = model_class.create! data
101
+ expect(model).to be_persisted
102
+ end
103
+ end
104
+
105
+ context 'with invalid data' do
106
+ let(:data) { { age: 12 } }
107
+
108
+ it 'should raise an error' do
109
+ expect { model_class.create! data }.to raise_error ::Acfs::InvalidResource do |error|
110
+ expect(error.errors).to be == { name: ['required'] }.stringify_keys
111
+ end
112
+ end
113
+ end
114
+ end
115
+
116
+ describe '.create' do
117
+ context 'with valid data' do
118
+ let(:data) { { name: 'Idefix', age: 12 } }
119
+
120
+ it 'should create new resource' do
121
+ model = model_class.create! data
122
+ expect(model.name).to be == 'Idefix'
123
+ expect(model.age).to be == 12
124
+ end
125
+
126
+ it 'should be persisted' do
127
+ model = model_class.create! data
128
+ expect(model).to be_persisted
129
+ end
130
+ end
131
+
132
+ context 'with invalid data' do
133
+ let(:data) { { age: 12 } }
134
+
135
+ it 'should return not persisted resource' do
136
+ model = model_class.create data
137
+ expect(model).to_not be_persisted
138
+ end
139
+
140
+ it 'should contain error hash' do
141
+ model = model_class.create data
142
+ expect(model.errors.to_hash).to be == { name: [ "required" ]}.stringify_keys
143
+ end
144
+ end
145
+ end
80
146
  end
@@ -7,9 +7,7 @@ describe Acfs::Model::QueryMethods do
7
7
  context 'with single id' do
8
8
  context 'with successful response' do
9
9
  before do
10
- stub_request(:get, 'http://users.example.org/users/1').to_return(
11
- body: MessagePack.dump({ id: 1, name: 'Anon', age: 12 }),
12
- headers: {'Content-Type' => 'application/x-msgpack'})
10
+ stub_request(:get, 'http://users.example.org/users/1').to_return response({ id: 1, name: 'Anon', age: 12 })
13
11
  end
14
12
 
15
13
  it 'should load a single remote resource' do
@@ -33,10 +31,7 @@ describe Acfs::Model::QueryMethods do
33
31
 
34
32
  context 'with 404 response' do
35
33
  before do
36
- stub_request(:get, 'http://users.example.org/users/1').to_return(
37
- status: 404,
38
- body: MessagePack.dump({ error: 'not found' }),
39
- headers: {'Content-Type' => 'application/x-msgpack'})
34
+ stub_request(:get, 'http://users.example.org/users/1').to_return response({ error: 'not found' }, status: 404)
40
35
  end
41
36
 
42
37
  it 'should raise a NotFound error' do
@@ -50,9 +45,7 @@ describe Acfs::Model::QueryMethods do
50
45
 
51
46
  context 'with 500 response' do
52
47
  before do
53
- stub_request(:get, 'http://users.example.org/users/1').to_return(
54
- status: 500,
55
- headers: {'Content-Type' => 'text/plain'})
48
+ stub_request(:get, 'http://users.example.org/users/1').to_return response(nil, status: 500)
56
49
  end
57
50
 
58
51
  it 'should raise a response error' do
@@ -67,12 +60,8 @@ describe Acfs::Model::QueryMethods do
67
60
 
68
61
  context 'with multiple ids' do
69
62
  before do
70
- stub_request(:get, 'http://users.example.org/users/1').to_return(
71
- body: MessagePack.dump({ id: 1, name: 'Anon', age: 12 }),
72
- headers: {'Content-Type' => 'application/x-msgpack'})
73
- stub_request(:get, 'http://users.example.org/users/2').to_return(
74
- body: MessagePack.dump({ id: 2, name: 'Johnny', age: 42 }),
75
- headers: {'Content-Type' => 'application/x-msgpack'})
63
+ stub_request(:get, 'http://users.example.org/users/1').to_return response({ id: 1, name: 'Anon', age: 12 })
64
+ stub_request(:get, 'http://users.example.org/users/2').to_return response({ id: 2, name: 'Johnny', age: 42 })
76
65
  end
77
66
 
78
67
  context 'with successful response' do
@@ -100,10 +89,7 @@ describe Acfs::Model::QueryMethods do
100
89
 
101
90
  context 'with one 404 response' do
102
91
  before do
103
- stub_request(:get, 'http://users.example.org/users/1').to_return(
104
- status: 404,
105
- body: MessagePack.dump({ error: 'not found' }),
106
- headers: {'Content-Type' => 'application/x-msgpack'})
92
+ stub_request(:get, 'http://users.example.org/users/1').to_return response({ error: 'not found' }, status: 404)
107
93
  end
108
94
 
109
95
  it 'should raise resource not found error' do
@@ -4,24 +4,12 @@ describe "Acfs" do
4
4
 
5
5
  before do
6
6
  headers = {}
7
- stub_request(:get, "http://users.example.org/users").to_return(
8
- body: MessagePack.dump([{ id: 1, name: "Anon", age: 12 }, { id: 2, name: "John", age: 26 }]),
9
- headers: headers.merge({'Content-Type' => 'application/x-msgpack'}))
10
- stub_request(:get, "http://users.example.org/users/2").to_return(
11
- body: MessagePack.dump({ id: 2, name: "John", age: 26 }),
12
- headers: headers.merge({'Content-Type' => 'application/x-msgpack', 'ETag' => 'LukeSkywalker' }))
13
- stub_request(:get, "http://users.example.org/users/3").to_return(
14
- body: MessagePack.dump({ id: 3, name: "Miraculix", age: 122 }),
15
- headers: headers.merge({'Content-Type' => 'application/x-msgpack'}))
16
- stub_request(:get, "http://users.example.org/users/100").to_return(
17
- body: '{"id":100,"name":"Jimmy","age":45}',
18
- headers: headers.merge({'Content-Type' => 'application/json'}))
19
- stub_request(:get, "http://users.example.org/users/2/friends").to_return(
20
- body: '[{"id":1,"name":"Anon","age":12}]',
21
- headers: headers.merge({'Content-Type' => 'application/json'}))
22
- stub_request(:get, "http://comments.example.org/comments?user=2").to_return(
23
- body: '[{"id":1,"text":"Comment #1"},{"id":2,"text":"Comment #2"}]',
24
- headers: headers.merge({'Content-Type' => 'application/json'}))
7
+ stub_request(:get, "http://users.example.org/users").to_return response([{ id: 1, name: "Anon", age: 12 }, { id: 2, name: "John", age: 26 }])
8
+ stub_request(:get, "http://users.example.org/users/2").to_return response({ id: 2, name: "John", age: 26 })
9
+ stub_request(:get, "http://users.example.org/users/3").to_return response({ id: 3, name: "Miraculix", age: 122 })
10
+ stub_request(:get, "http://users.example.org/users/100").to_return response({ id:100, name: "Jimmy", age: 45 })
11
+ stub_request(:get, "http://users.example.org/users/2/friends").to_return response([{ id: 1, name: "Anon", age: 12 }])
12
+ stub_request(:get, "http://comments.example.org/comments?user=2").to_return response([{ id: 1, text: "Comment #1"}, { id: 2, text: "Comment #2" }])
25
13
  end
26
14
 
27
15
  it 'should update single resource synchronously' do
@@ -47,8 +35,7 @@ describe "Acfs" do
47
35
  end
48
36
 
49
37
  it 'should create a single resource synchronously' do
50
- stub = stub_request(:post, "http://users.example.org/sessions")
51
- .to_return body: '{"id":"sessionhash","user":1}', headers: {'Content-Type' => 'application/json'}
38
+ stub = stub_request(:post, "http://users.example.org/sessions").to_return response({id: 'sessionhash', user: 1})
52
39
 
53
40
  session = Session.create ident: 'Anon'
54
41
 
@@ -0,0 +1,9 @@
1
+
2
+ def response(data = nil, opts = {})
3
+ if data
4
+ opts.merge! body: JSON.dump(data)
5
+ opts[:headers] ||= {}
6
+ opts[:headers].merge! 'Content-Type' => 'application/json'
7
+ end
8
+ opts
9
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.0
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-01 00:00:00.000000000 Z
11
+ date: 2013-05-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -94,90 +94,6 @@ dependencies:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.3'
97
- - !ruby/object:Gem::Dependency
98
- name: webmock
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ~>
102
- - !ruby/object:Gem::Version
103
- version: '1.7'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ~>
109
- - !ruby/object:Gem::Version
110
- version: '1.7'
111
- - !ruby/object:Gem::Dependency
112
- name: rake
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - '>='
130
- - !ruby/object:Gem::Version
131
- version: '0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - '>='
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: guard-rspec
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - '>='
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: coveralls
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - '>='
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - '>='
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
- - !ruby/object:Gem::Dependency
168
- name: msgpack
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - '>='
172
- - !ruby/object:Gem::Version
173
- version: '0'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - '>='
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
97
  description: API Client For Services
182
98
  email:
183
99
  - jg@altimos.de
@@ -196,7 +112,6 @@ files:
196
112
  - acfs.gemspec
197
113
  - gemfiles/Gemfile.rails-3-2
198
114
  - gemfiles/Gemfile.rails-4-0
199
- - gemfiles/Gemfile.rails-head
200
115
  - lib/acfs.rb
201
116
  - lib/acfs/adapter/typhoeus.rb
202
117
  - lib/acfs/collection.rb
@@ -246,6 +161,7 @@ files:
246
161
  - spec/acfs/service_spec.rb
247
162
  - spec/acfs_spec.rb
248
163
  - spec/spec_helper.rb
164
+ - spec/support/response.rb
249
165
  - spec/support/service.rb
250
166
  homepage: ''
251
167
  licenses:
@@ -288,4 +204,5 @@ test_files:
288
204
  - spec/acfs/service_spec.rb
289
205
  - spec/acfs_spec.rb
290
206
  - spec/spec_helper.rb
207
+ - spec/support/response.rb
291
208
  - spec/support/service.rb
@@ -1,7 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in acfs.gemspec
4
- gemspec path: '../'
5
-
6
- gem 'activesupport', github: 'rails/rails'
7
- gem 'activemodel', github: 'rails/rails'