analysand 2.0.0 → 3.0.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/.gitignore +1 -0
- data/CHANGELOG +34 -0
- data/README +14 -8
- data/analysand.gemspec +1 -1
- data/lib/analysand/bulk_response.rb +1 -1
- data/lib/analysand/change_watcher.rb +8 -6
- data/lib/analysand/config_response.rb +14 -13
- data/lib/analysand/errors.rb +3 -0
- data/lib/analysand/http.rb +10 -0
- data/lib/analysand/instance.rb +108 -54
- data/lib/analysand/status_code_predicates.rb +8 -0
- data/lib/analysand/version.rb +1 -1
- data/spec/analysand/a_response.rb +23 -16
- data/spec/analysand/database_writing_spec.rb +12 -2
- data/spec/analysand/instance_spec.rb +69 -17
- data/spec/analysand/view_response_spec.rb +2 -2
- data/spec/analysand/view_streaming_spec.rb +3 -3
- data/spec/fixtures/vcr_cassettes/{unauthorized_set_config.yml → unauthorized_put_config.yml} +0 -0
- data/spec/spec_helper.rb +1 -0
- metadata +133 -219
- data/spec/analysand/a_session_grantor.rb +0 -40
- data/spec/fixtures/vcr_cassettes/set_config.yml +0 -77
data/lib/analysand/version.rb
CHANGED
@@ -1,31 +1,38 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
shared_examples_for 'a response' do
|
4
|
-
%w(
|
4
|
+
%w(success? conflict? unauthorized?
|
5
|
+
etag code cookies session_cookie).each do |m|
|
5
6
|
it "responds to ##{m}" do
|
6
7
|
response.should respond_to(m)
|
7
8
|
end
|
8
9
|
end
|
9
10
|
|
10
11
|
describe '#conflict?' do
|
11
|
-
|
12
|
-
|
13
|
-
response.stub!(:code => '409')
|
14
|
-
end
|
12
|
+
it 'returns true if response code is 409' do
|
13
|
+
response.stub(:code => '409')
|
15
14
|
|
16
|
-
|
17
|
-
response.should be_conflict
|
18
|
-
end
|
15
|
+
response.should be_conflict
|
19
16
|
end
|
20
17
|
|
21
|
-
|
22
|
-
|
23
|
-
response.stub!(:code => '200')
|
24
|
-
end
|
18
|
+
it 'returns false if response code is 200' do
|
19
|
+
response.stub(:code => '200')
|
25
20
|
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
response.should_not be_conflict
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#unauthorized?' do
|
26
|
+
it 'returns true if response code is 401' do
|
27
|
+
response.stub(:code => '401')
|
28
|
+
|
29
|
+
response.should be_unauthorized
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'returns false if response code is 200' do
|
33
|
+
response.stub(:code => '200')
|
34
|
+
|
35
|
+
response.should_not be_unauthorized
|
29
36
|
end
|
30
37
|
end
|
31
38
|
|
@@ -46,7 +53,7 @@ shared_examples_for 'a response' do
|
|
46
53
|
end
|
47
54
|
|
48
55
|
before do
|
49
|
-
response.stub
|
56
|
+
response.stub(:cookies => [cookie])
|
50
57
|
end
|
51
58
|
|
52
59
|
it 'returns the AuthSession cookie' do
|
@@ -186,11 +186,11 @@ module Analysand
|
|
186
186
|
end
|
187
187
|
|
188
188
|
it 'accepts credentials' do
|
189
|
-
lambda { db.ensure_full_commit(member1_credentials) }.should_not raise_error
|
189
|
+
lambda { db.ensure_full_commit(member1_credentials) }.should_not raise_error
|
190
190
|
end
|
191
191
|
|
192
192
|
it 'accepts a seq parameter' do
|
193
|
-
lambda { db.ensure_full_commit(member1_credentials, :seq => 10) }.should_not raise_error
|
193
|
+
lambda { db.ensure_full_commit(member1_credentials, :seq => 10) }.should_not raise_error
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
@@ -338,6 +338,16 @@ module Analysand
|
|
338
338
|
resp.should be_success
|
339
339
|
end
|
340
340
|
|
341
|
+
describe 'if authorization fails' do
|
342
|
+
let(:wrong) do
|
343
|
+
{ :username => 'wrong', :password => 'wrong' }
|
344
|
+
end
|
345
|
+
|
346
|
+
it 'raises Analysand::BulkOperationFailed' do
|
347
|
+
lambda { db.bulk_docs!([doc1, doc2], wrong) }.should raise_error(Analysand::BulkOperationFailed)
|
348
|
+
end
|
349
|
+
end
|
350
|
+
|
341
351
|
describe 'if an operation fails' do
|
342
352
|
before do
|
343
353
|
doc2['_id'] = 'doc1'
|
@@ -2,11 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
require 'analysand/errors'
|
4
4
|
require 'analysand/instance'
|
5
|
+
require 'json'
|
5
6
|
require 'uri'
|
6
7
|
require 'vcr'
|
7
8
|
|
8
|
-
require File.expand_path('../a_session_grantor', __FILE__)
|
9
|
-
|
10
9
|
module Analysand
|
11
10
|
describe Instance do
|
12
11
|
describe '#initialize' do
|
@@ -115,7 +114,9 @@ module Analysand
|
|
115
114
|
|
116
115
|
it 'retrieves many configuration options' do
|
117
116
|
VCR.use_cassette('get_many_config') do
|
118
|
-
instance.get_config('stats', admin_credentials).value
|
117
|
+
json = instance.get_config('stats', admin_credentials).value
|
118
|
+
|
119
|
+
JSON.parse(json).should == {
|
119
120
|
'rate' => '1000',
|
120
121
|
'samples' => '[0, 60, 300, 900]'
|
121
122
|
}
|
@@ -123,30 +124,81 @@ module Analysand
|
|
123
124
|
end
|
124
125
|
end
|
125
126
|
|
126
|
-
describe '#
|
127
|
+
describe '#put_config!' do
|
127
128
|
it 'raises ConfigurationNotSaved on non-success' do
|
128
|
-
VCR.use_cassette('
|
129
|
-
lambda { instance.
|
129
|
+
VCR.use_cassette('unauthorized_put_config') do
|
130
|
+
lambda { instance.put_config!('stats/rate', '"1000"') }.should raise_error(ConfigurationNotSaved)
|
130
131
|
end
|
131
132
|
end
|
132
133
|
end
|
133
134
|
|
134
|
-
describe '#
|
135
|
+
describe '#put_config' do
|
135
136
|
let(:credentials) { admin_credentials }
|
136
137
|
|
138
|
+
after do
|
139
|
+
instance.delete_config!('foo/bar', admin_credentials)
|
140
|
+
end
|
141
|
+
|
137
142
|
it 'sets a configuration option' do
|
138
|
-
|
139
|
-
|
140
|
-
instance.get_config('stats/rate', admin_credentials).value.should == '"1200"'
|
141
|
-
end
|
143
|
+
instance.put_config('foo/bar', '"1200"', admin_credentials)
|
144
|
+
instance.get_config('foo/bar', admin_credentials).value.should == '"1200"'
|
142
145
|
end
|
143
146
|
|
144
|
-
it '
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
147
|
+
it 'roundtrips values from get_config' do
|
148
|
+
instance.put_config!('foo/bar', '"[0, 60, 300, 900]"', admin_credentials)
|
149
|
+
|
150
|
+
from_db = instance.get_config('foo/bar', admin_credentials).value
|
151
|
+
instance.put_config('foo/bar', from_db, admin_credentials)
|
152
|
+
instance.get_config('foo/bar', admin_credentials).value.should == from_db
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
describe '#delete_config' do
|
157
|
+
let(:credentials) { admin_credentials }
|
158
|
+
|
159
|
+
before do
|
160
|
+
instance.put_config!('foo/bar', '"1000"', admin_credentials)
|
161
|
+
end
|
162
|
+
|
163
|
+
it 'deletes configuration options' do
|
164
|
+
instance.delete_config('foo/bar', admin_credentials)
|
165
|
+
|
166
|
+
resp = instance.get_config('foo/bar', admin_credentials)
|
167
|
+
resp.not_found?.should be_true
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
describe '#put_admin' do
|
172
|
+
let(:credentials) { admin_credentials }
|
173
|
+
let(:password) { 'password' }
|
174
|
+
let(:username) { 'new_admin' }
|
175
|
+
|
176
|
+
after do
|
177
|
+
instance.delete_admin!(username, credentials)
|
178
|
+
end
|
179
|
+
|
180
|
+
it 'adds an admin to the CouchDB admins list' do
|
181
|
+
instance.put_admin(username, password, admin_credentials)
|
182
|
+
|
183
|
+
resp = instance.post_session(username, password)
|
184
|
+
resp.body['roles'].should include('_admin')
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
describe '#delete_admin' do
|
189
|
+
let(:credentials) { admin_credentials }
|
190
|
+
let(:password) { 'password' }
|
191
|
+
let(:username) { 'new_admin' }
|
192
|
+
|
193
|
+
before do
|
194
|
+
instance.put_admin!(username, password, admin_credentials)
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'deletes an admin from the CouchDB admins list' do
|
198
|
+
instance.delete_admin(username, admin_credentials)
|
199
|
+
|
200
|
+
resp = instance.post_session(username, password)
|
201
|
+
resp.should be_unauthorized
|
150
202
|
end
|
151
203
|
end
|
152
204
|
end
|
@@ -25,7 +25,7 @@ module Analysand
|
|
25
25
|
|
26
26
|
describe '#docs' do
|
27
27
|
describe 'if the view includes docs' do
|
28
|
-
subject { ViewResponse.new(
|
28
|
+
subject { ViewResponse.new(double(:body => resp_with_docs)) }
|
29
29
|
|
30
30
|
it 'returns the value of the "doc" key in each row' do
|
31
31
|
subject.docs.should == [{'foo' => 'bar'}]
|
@@ -33,7 +33,7 @@ module Analysand
|
|
33
33
|
end
|
34
34
|
|
35
35
|
describe 'if the view does not include docs' do
|
36
|
-
subject { ViewResponse.new(
|
36
|
+
subject { ViewResponse.new(double(:body => resp_without_docs)) }
|
37
37
|
|
38
38
|
it 'returns []' do
|
39
39
|
subject.docs.should == []
|
@@ -10,15 +10,15 @@ module Analysand
|
|
10
10
|
let(:db) { Database.new(database_uri) }
|
11
11
|
let(:row_count) { 15000 }
|
12
12
|
|
13
|
-
before
|
13
|
+
before do
|
14
14
|
WebMock.disable!
|
15
15
|
end
|
16
16
|
|
17
|
-
after
|
17
|
+
after do
|
18
18
|
WebMock.enable!
|
19
19
|
end
|
20
20
|
|
21
|
-
before
|
21
|
+
before do
|
22
22
|
clean_databases!
|
23
23
|
|
24
24
|
doc = {
|
data/spec/fixtures/vcr_cassettes/{unauthorized_set_config.yml → unauthorized_put_config.yml}
RENAMED
File without changes
|
data/spec/spec_helper.rb
CHANGED
@@ -4,6 +4,7 @@ require File.expand_path('../support/database_access', __FILE__)
|
|
4
4
|
require File.expand_path('../support/example_isolation', __FILE__)
|
5
5
|
require File.expand_path('../support/test_parameters', __FILE__)
|
6
6
|
|
7
|
+
require 'celluloid/autostart' # for ChangeWatcher specs
|
7
8
|
require 'vcr'
|
8
9
|
|
9
10
|
RSpec.configure do |config|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: analysand
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,318 +9,259 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
requirements:
|
17
|
-
- - ! '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.12'
|
20
|
-
none: false
|
15
|
+
name: celluloid
|
21
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
22
18
|
requirements:
|
23
|
-
- -
|
19
|
+
- - ~>
|
24
20
|
- !ruby/object:Gem::Version
|
25
|
-
version:
|
26
|
-
none: false
|
27
|
-
name: celluloid
|
21
|
+
version: 0.14.0
|
28
22
|
type: :runtime
|
29
23
|
prerelease: false
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
32
26
|
requirements:
|
33
|
-
- -
|
27
|
+
- - ~>
|
34
28
|
- !ruby/object:Gem::Version
|
35
|
-
version:
|
36
|
-
|
29
|
+
version: 0.14.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: celluloid-io
|
37
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
38
34
|
requirements:
|
39
35
|
- - ! '>='
|
40
36
|
- !ruby/object:Gem::Version
|
41
37
|
version: '0'
|
42
|
-
none: false
|
43
|
-
name: celluloid-io
|
44
38
|
type: :runtime
|
45
39
|
prerelease: false
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
48
42
|
requirements:
|
49
43
|
- - ! '>='
|
50
44
|
- !ruby/object:Gem::Version
|
51
45
|
version: '0'
|
52
|
-
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: http_parser.rb
|
53
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
54
50
|
requirements:
|
55
51
|
- - ! '>='
|
56
52
|
- !ruby/object:Gem::Version
|
57
53
|
version: '0'
|
58
|
-
none: false
|
59
|
-
name: http_parser.rb
|
60
54
|
type: :runtime
|
61
55
|
prerelease: false
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
64
58
|
requirements:
|
65
59
|
- - ! '>='
|
66
60
|
- !ruby/object:Gem::Version
|
67
61
|
version: '0'
|
68
|
-
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: json
|
69
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
70
66
|
requirements:
|
71
67
|
- - ! '>='
|
72
68
|
- !ruby/object:Gem::Version
|
73
69
|
version: '0'
|
74
|
-
none: false
|
75
|
-
name: json
|
76
70
|
type: :runtime
|
77
71
|
prerelease: false
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
80
74
|
requirements:
|
81
75
|
- - ! '>='
|
82
76
|
- !ruby/object:Gem::Version
|
83
77
|
version: '0'
|
84
|
-
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: json-stream
|
85
80
|
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
86
82
|
requirements:
|
87
83
|
- - ! '>='
|
88
84
|
- !ruby/object:Gem::Version
|
89
85
|
version: '0'
|
90
|
-
none: false
|
91
|
-
name: json-stream
|
92
86
|
type: :runtime
|
93
87
|
prerelease: false
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
96
90
|
requirements:
|
97
91
|
- - ! '>='
|
98
92
|
- !ruby/object:Gem::Version
|
99
93
|
version: '0'
|
100
|
-
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: net-http-persistent
|
101
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
102
98
|
requirements:
|
103
99
|
- - ! '>='
|
104
100
|
- !ruby/object:Gem::Version
|
105
101
|
version: '0'
|
106
|
-
none: false
|
107
|
-
name: net-http-persistent
|
108
102
|
type: :runtime
|
109
103
|
prerelease: false
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
112
106
|
requirements:
|
113
107
|
- - ! '>='
|
114
108
|
- !ruby/object:Gem::Version
|
115
109
|
version: '0'
|
116
|
-
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rack
|
117
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
118
114
|
requirements:
|
119
115
|
- - ! '>='
|
120
116
|
- !ruby/object:Gem::Version
|
121
117
|
version: '0'
|
122
|
-
none: false
|
123
|
-
name: rack
|
124
118
|
type: :runtime
|
125
119
|
prerelease: false
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
128
122
|
requirements:
|
129
123
|
- - ! '>='
|
130
124
|
- !ruby/object:Gem::Version
|
131
125
|
version: '0'
|
132
|
-
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: yajl-ruby
|
133
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
134
130
|
requirements:
|
135
131
|
- - ! '>='
|
136
132
|
- !ruby/object:Gem::Version
|
137
133
|
version: '0'
|
138
|
-
none: false
|
139
|
-
name: yajl-ruby
|
140
134
|
type: :runtime
|
141
135
|
prerelease: false
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
144
138
|
requirements:
|
145
139
|
- - ! '>='
|
146
140
|
- !ruby/object:Gem::Version
|
147
141
|
version: '0'
|
148
|
-
|
142
|
+
- !ruby/object:Gem::Dependency
|
143
|
+
name: rake
|
149
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
150
146
|
requirements:
|
151
147
|
- - ! '>='
|
152
148
|
- !ruby/object:Gem::Version
|
153
149
|
version: '0'
|
154
|
-
none: false
|
155
|
-
name: rake
|
156
150
|
type: :development
|
157
151
|
prerelease: false
|
158
|
-
- !ruby/object:Gem::Dependency
|
159
152
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
160
154
|
requirements:
|
161
155
|
- - ! '>='
|
162
156
|
- !ruby/object:Gem::Version
|
163
157
|
version: '0'
|
164
|
-
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: rspec
|
165
160
|
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
166
162
|
requirements:
|
167
163
|
- - ! '>='
|
168
164
|
- !ruby/object:Gem::Version
|
169
165
|
version: '0'
|
170
|
-
none: false
|
171
|
-
name: rspec
|
172
166
|
type: :development
|
173
167
|
prerelease: false
|
174
|
-
- !ruby/object:Gem::Dependency
|
175
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
176
170
|
requirements:
|
177
171
|
- - ! '>='
|
178
172
|
- !ruby/object:Gem::Version
|
179
173
|
version: '0'
|
180
|
-
|
174
|
+
- !ruby/object:Gem::Dependency
|
175
|
+
name: vcr
|
181
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
182
178
|
requirements:
|
183
179
|
- - ! '>='
|
184
180
|
- !ruby/object:Gem::Version
|
185
181
|
version: '0'
|
186
|
-
none: false
|
187
|
-
name: vcr
|
188
182
|
type: :development
|
189
183
|
prerelease: false
|
190
|
-
- !ruby/object:Gem::Dependency
|
191
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
192
186
|
requirements:
|
193
187
|
- - ! '>='
|
194
188
|
- !ruby/object:Gem::Version
|
195
189
|
version: '0'
|
196
|
-
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: webmock
|
197
192
|
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
198
194
|
requirements:
|
199
195
|
- - ! '>='
|
200
196
|
- !ruby/object:Gem::Version
|
201
197
|
version: '0'
|
202
|
-
none: false
|
203
|
-
name: webmock
|
204
198
|
type: :development
|
205
199
|
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
206
206
|
description: A terrible burden for a couch
|
207
207
|
email:
|
208
208
|
- yipdw@member.fsf.org
|
209
209
|
executables:
|
210
|
-
-
|
211
|
-
YW5hbHlzYW5k
|
210
|
+
- analysand
|
212
211
|
extensions: []
|
213
212
|
extra_rdoc_files: []
|
214
213
|
files:
|
215
|
-
-
|
216
|
-
|
217
|
-
-
|
218
|
-
|
219
|
-
-
|
220
|
-
|
221
|
-
-
|
222
|
-
|
223
|
-
-
|
224
|
-
|
225
|
-
-
|
226
|
-
|
227
|
-
-
|
228
|
-
|
229
|
-
-
|
230
|
-
|
231
|
-
-
|
232
|
-
|
233
|
-
-
|
234
|
-
|
235
|
-
-
|
236
|
-
|
237
|
-
-
|
238
|
-
|
239
|
-
-
|
240
|
-
|
241
|
-
-
|
242
|
-
|
243
|
-
-
|
244
|
-
|
245
|
-
-
|
246
|
-
|
247
|
-
-
|
248
|
-
|
249
|
-
-
|
250
|
-
|
251
|
-
-
|
252
|
-
|
253
|
-
-
|
254
|
-
|
255
|
-
-
|
256
|
-
|
257
|
-
-
|
258
|
-
|
259
|
-
-
|
260
|
-
|
261
|
-
-
|
262
|
-
|
263
|
-
-
|
264
|
-
|
265
|
-
-
|
266
|
-
bGliL2FuYWx5c2FuZC92ZXJzaW9uLnJi
|
267
|
-
- !binary |-
|
268
|
-
bGliL2FuYWx5c2FuZC92aWV3X3Jlc3BvbnNlLnJi
|
269
|
-
- !binary |-
|
270
|
-
bGliL2FuYWx5c2FuZC92aWV3X3N0cmVhbWluZy9idWlsZGVyLnJi
|
271
|
-
- !binary |-
|
272
|
-
bGliL2FuYWx5c2FuZC92aWV3aW5nLnJi
|
273
|
-
- !binary |-
|
274
|
-
bGliL2FuYWx5c2FuZC93cml0aW5nLnJi
|
275
|
-
- !binary |-
|
276
|
-
c2NyaXB0L3NldHVwX2RhdGFiYXNlLnJi
|
277
|
-
- !binary |-
|
278
|
-
c3BlYy9hbmFseXNhbmQvYV9yZXNwb25zZS5yYg==
|
279
|
-
- !binary |-
|
280
|
-
c3BlYy9hbmFseXNhbmQvYV9zZXNzaW9uX2dyYW50b3IucmI=
|
281
|
-
- !binary |-
|
282
|
-
c3BlYy9hbmFseXNhbmQvY2hhbmdlX3dhdGNoZXJfc3BlYy5yYg==
|
283
|
-
- !binary |-
|
284
|
-
c3BlYy9hbmFseXNhbmQvZGF0YWJhc2Vfc3BlYy5yYg==
|
285
|
-
- !binary |-
|
286
|
-
c3BlYy9hbmFseXNhbmQvZGF0YWJhc2Vfd3JpdGluZ19zcGVjLnJi
|
287
|
-
- !binary |-
|
288
|
-
c3BlYy9hbmFseXNhbmQvaW5zdGFuY2Vfc3BlYy5yYg==
|
289
|
-
- !binary |-
|
290
|
-
c3BlYy9hbmFseXNhbmQvcmVzcG9uc2Vfc3BlYy5yYg==
|
291
|
-
- !binary |-
|
292
|
-
c3BlYy9hbmFseXNhbmQvdmlld19yZXNwb25zZV9zcGVjLnJi
|
293
|
-
- !binary |-
|
294
|
-
c3BlYy9hbmFseXNhbmQvdmlld19zdHJlYW1pbmcvYnVpbGRlcl9zcGVjLnJi
|
295
|
-
- !binary |-
|
296
|
-
c3BlYy9hbmFseXNhbmQvdmlld19zdHJlYW1pbmdfc3BlYy5yYg==
|
297
|
-
- !binary |-
|
298
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9jb25maWcueW1s
|
299
|
-
- !binary |-
|
300
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9tYW55X2NvbmZpZy55
|
301
|
-
bWw=
|
302
|
-
- !binary |-
|
303
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2hlYWRfcmVxdWVzdF93aXRo
|
304
|
-
X2V0YWcueW1s
|
305
|
-
- !binary |-
|
306
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3JlbG9hZF9jb25maWcueW1s
|
307
|
-
- !binary |-
|
308
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3NldF9jb25maWcueW1s
|
309
|
-
- !binary |-
|
310
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3VuYXV0aG9yaXplZF9zZXRf
|
311
|
-
Y29uZmlnLnltbA==
|
312
|
-
- !binary |-
|
313
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3ZpZXcueW1s
|
314
|
-
- !binary |-
|
315
|
-
c3BlYy9zbW9rZS9kYXRhYmFzZV90aHJlYWRfc3BlYy5yYg==
|
316
|
-
- !binary |-
|
317
|
-
c3BlYy9zcGVjX2hlbHBlci5yYg==
|
318
|
-
- !binary |-
|
319
|
-
c3BlYy9zdXBwb3J0L2RhdGFiYXNlX2FjY2Vzcy5yYg==
|
320
|
-
- !binary |-
|
321
|
-
c3BlYy9zdXBwb3J0L2V4YW1wbGVfaXNvbGF0aW9uLnJi
|
322
|
-
- !binary |-
|
323
|
-
c3BlYy9zdXBwb3J0L3Rlc3RfcGFyYW1ldGVycy5yYg==
|
214
|
+
- .gitignore
|
215
|
+
- .rspec
|
216
|
+
- .travis.yml
|
217
|
+
- CHANGELOG
|
218
|
+
- Gemfile
|
219
|
+
- LICENSE
|
220
|
+
- README
|
221
|
+
- Rakefile
|
222
|
+
- analysand.gemspec
|
223
|
+
- bin/analysand
|
224
|
+
- lib/analysand.rb
|
225
|
+
- lib/analysand/bulk_response.rb
|
226
|
+
- lib/analysand/change_watcher.rb
|
227
|
+
- lib/analysand/config_response.rb
|
228
|
+
- lib/analysand/connection_testing.rb
|
229
|
+
- lib/analysand/database.rb
|
230
|
+
- lib/analysand/errors.rb
|
231
|
+
- lib/analysand/http.rb
|
232
|
+
- lib/analysand/instance.rb
|
233
|
+
- lib/analysand/reading.rb
|
234
|
+
- lib/analysand/response.rb
|
235
|
+
- lib/analysand/response_headers.rb
|
236
|
+
- lib/analysand/session_response.rb
|
237
|
+
- lib/analysand/status_code_predicates.rb
|
238
|
+
- lib/analysand/streaming_view_response.rb
|
239
|
+
- lib/analysand/version.rb
|
240
|
+
- lib/analysand/view_response.rb
|
241
|
+
- lib/analysand/view_streaming/builder.rb
|
242
|
+
- lib/analysand/viewing.rb
|
243
|
+
- lib/analysand/writing.rb
|
244
|
+
- script/setup_database.rb
|
245
|
+
- spec/analysand/a_response.rb
|
246
|
+
- spec/analysand/change_watcher_spec.rb
|
247
|
+
- spec/analysand/database_spec.rb
|
248
|
+
- spec/analysand/database_writing_spec.rb
|
249
|
+
- spec/analysand/instance_spec.rb
|
250
|
+
- spec/analysand/response_spec.rb
|
251
|
+
- spec/analysand/view_response_spec.rb
|
252
|
+
- spec/analysand/view_streaming/builder_spec.rb
|
253
|
+
- spec/analysand/view_streaming_spec.rb
|
254
|
+
- spec/fixtures/vcr_cassettes/get_config.yml
|
255
|
+
- spec/fixtures/vcr_cassettes/get_many_config.yml
|
256
|
+
- spec/fixtures/vcr_cassettes/head_request_with_etag.yml
|
257
|
+
- spec/fixtures/vcr_cassettes/reload_config.yml
|
258
|
+
- spec/fixtures/vcr_cassettes/unauthorized_put_config.yml
|
259
|
+
- spec/fixtures/vcr_cassettes/view.yml
|
260
|
+
- spec/smoke/database_thread_spec.rb
|
261
|
+
- spec/spec_helper.rb
|
262
|
+
- spec/support/database_access.rb
|
263
|
+
- spec/support/example_isolation.rb
|
264
|
+
- spec/support/test_parameters.rb
|
324
265
|
homepage: https://github.com/yipdw/analysand
|
325
266
|
licenses: []
|
326
267
|
post_install_message:
|
@@ -328,68 +269,41 @@ rdoc_options: []
|
|
328
269
|
require_paths:
|
329
270
|
- lib
|
330
271
|
required_ruby_version: !ruby/object:Gem::Requirement
|
272
|
+
none: false
|
331
273
|
requirements:
|
332
274
|
- - ! '>='
|
333
275
|
- !ruby/object:Gem::Version
|
334
276
|
version: '1.9'
|
335
|
-
none: false
|
336
277
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
278
|
+
none: false
|
337
279
|
requirements:
|
338
280
|
- - ! '>='
|
339
281
|
- !ruby/object:Gem::Version
|
340
282
|
version: '0'
|
341
|
-
none: false
|
342
283
|
requirements: []
|
343
284
|
rubyforge_project:
|
344
|
-
rubygems_version: 1.8.
|
285
|
+
rubygems_version: 1.8.23
|
345
286
|
signing_key:
|
346
287
|
specification_version: 3
|
347
288
|
summary: A CouchDB client of dubious worth
|
348
289
|
test_files:
|
349
|
-
-
|
350
|
-
|
351
|
-
-
|
352
|
-
|
353
|
-
-
|
354
|
-
|
355
|
-
-
|
356
|
-
|
357
|
-
-
|
358
|
-
|
359
|
-
-
|
360
|
-
|
361
|
-
-
|
362
|
-
|
363
|
-
-
|
364
|
-
|
365
|
-
-
|
366
|
-
|
367
|
-
-
|
368
|
-
|
369
|
-
- !binary |-
|
370
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9jb25maWcueW1s
|
371
|
-
- !binary |-
|
372
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2dldF9tYW55X2NvbmZpZy55
|
373
|
-
bWw=
|
374
|
-
- !binary |-
|
375
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL2hlYWRfcmVxdWVzdF93aXRo
|
376
|
-
X2V0YWcueW1s
|
377
|
-
- !binary |-
|
378
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3JlbG9hZF9jb25maWcueW1s
|
379
|
-
- !binary |-
|
380
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3NldF9jb25maWcueW1s
|
381
|
-
- !binary |-
|
382
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3VuYXV0aG9yaXplZF9zZXRf
|
383
|
-
Y29uZmlnLnltbA==
|
384
|
-
- !binary |-
|
385
|
-
c3BlYy9maXh0dXJlcy92Y3JfY2Fzc2V0dGVzL3ZpZXcueW1s
|
386
|
-
- !binary |-
|
387
|
-
c3BlYy9zbW9rZS9kYXRhYmFzZV90aHJlYWRfc3BlYy5yYg==
|
388
|
-
- !binary |-
|
389
|
-
c3BlYy9zcGVjX2hlbHBlci5yYg==
|
390
|
-
- !binary |-
|
391
|
-
c3BlYy9zdXBwb3J0L2RhdGFiYXNlX2FjY2Vzcy5yYg==
|
392
|
-
- !binary |-
|
393
|
-
c3BlYy9zdXBwb3J0L2V4YW1wbGVfaXNvbGF0aW9uLnJi
|
394
|
-
- !binary |-
|
395
|
-
c3BlYy9zdXBwb3J0L3Rlc3RfcGFyYW1ldGVycy5yYg==
|
290
|
+
- spec/analysand/a_response.rb
|
291
|
+
- spec/analysand/change_watcher_spec.rb
|
292
|
+
- spec/analysand/database_spec.rb
|
293
|
+
- spec/analysand/database_writing_spec.rb
|
294
|
+
- spec/analysand/instance_spec.rb
|
295
|
+
- spec/analysand/response_spec.rb
|
296
|
+
- spec/analysand/view_response_spec.rb
|
297
|
+
- spec/analysand/view_streaming/builder_spec.rb
|
298
|
+
- spec/analysand/view_streaming_spec.rb
|
299
|
+
- spec/fixtures/vcr_cassettes/get_config.yml
|
300
|
+
- spec/fixtures/vcr_cassettes/get_many_config.yml
|
301
|
+
- spec/fixtures/vcr_cassettes/head_request_with_etag.yml
|
302
|
+
- spec/fixtures/vcr_cassettes/reload_config.yml
|
303
|
+
- spec/fixtures/vcr_cassettes/unauthorized_put_config.yml
|
304
|
+
- spec/fixtures/vcr_cassettes/view.yml
|
305
|
+
- spec/smoke/database_thread_spec.rb
|
306
|
+
- spec/spec_helper.rb
|
307
|
+
- spec/support/database_access.rb
|
308
|
+
- spec/support/example_isolation.rb
|
309
|
+
- spec/support/test_parameters.rb
|