waistband 0.14.3 → 0.15.1
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 +8 -8
- data/Gemfile +1 -1
- data/lib/waistband.rb +1 -0
- data/lib/waistband/client.rb +61 -0
- data/lib/waistband/configuration.rb +12 -21
- data/lib/waistband/index.rb +11 -1
- data/lib/waistband/version.rb +1 -1
- data/spec/config/waistband/waistband_multi_connection_events.yml +22 -0
- data/spec/lib/configuration_spec.rb +8 -6
- data/spec/lib/index_multi_connection_spec.rb +27 -0
- data/spec/lib/index_spec.rb +7 -0
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
---
|
|
2
2
|
!binary "U0hBMQ==":
|
|
3
3
|
metadata.gz: !binary |-
|
|
4
|
-
|
|
4
|
+
ZGY2N2VmZTYyOTM4MjMzZTk2NTZmNjgyNjRjMjMwODVlMTNkZTAxMQ==
|
|
5
5
|
data.tar.gz: !binary |-
|
|
6
|
-
|
|
6
|
+
MTRiNmJhMjdkYTliZmU1YWVmMDdhYzk0OTA4N2Q3MmI0NWZiNjk3Yw==
|
|
7
7
|
SHA512:
|
|
8
8
|
metadata.gz: !binary |-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
NjliOGI1ZDhjZTAyMmM1ZGJhNWRjOGI0YTFmZjM0MDQ0YThkOTgxMzMxYjA1
|
|
10
|
+
MzAzMTBhYTQzNzk0MDRjYTA5ZTAxOGVmMjlkOTVlMzk4MDk5YTA1OWQ5YzAx
|
|
11
|
+
YmM4NmRlNzk3ZjM0N2YxYmEzYzBkZjY4NjY4OGQwNmM1YWI2NWM=
|
|
12
12
|
data.tar.gz: !binary |-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
MjFjNTllOTExNDYwNzU0MGIwNWI4Yjg1Zjg4ZDZkZjJiZDUzY2I2MWE0NmEz
|
|
14
|
+
MjAzNjM4MWI3MTc2MzVlOTMzOWNmZDQ2ZWI5NGU1NDQwY2NmZjU1MWJjODNl
|
|
15
|
+
MjE4YTFmMDIzMmY2YTliMmRkNzE2MDZhZmFhMTU2MTUxYjgxNmM=
|
data/Gemfile
CHANGED
data/lib/waistband.rb
CHANGED
|
@@ -5,6 +5,7 @@ module Waistband
|
|
|
5
5
|
autoload :Errors, "waistband/errors"
|
|
6
6
|
autoload :StringifiedArray, "waistband/stringified_array"
|
|
7
7
|
autoload :StringifiedHash, "waistband/stringified_hash"
|
|
8
|
+
autoload :Client, "waistband/client"
|
|
8
9
|
autoload :Configuration, "waistband/configuration"
|
|
9
10
|
autoload :Index, "waistband/index"
|
|
10
11
|
autoload :SearchResults, "waistband/search_results"
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
module Waistband
|
|
2
|
+
class Client
|
|
3
|
+
|
|
4
|
+
class << self
|
|
5
|
+
|
|
6
|
+
def from_config(config_hash)
|
|
7
|
+
new(
|
|
8
|
+
config_hash['servers'], randomize_hosts: true,
|
|
9
|
+
retry_on_failure: config_hash['retries'],
|
|
10
|
+
reload_on_failure: config_hash['reload_on_failure'],
|
|
11
|
+
timeout: config_hash['timeout'],
|
|
12
|
+
adapter: config_hash['adapter']
|
|
13
|
+
)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def initialize(servers, options = {})
|
|
19
|
+
@servers = servers
|
|
20
|
+
@randomize_hosts = options.fetch(:randomize_hosts, true)
|
|
21
|
+
@retry_on_failure = options[:retry_on_failure]
|
|
22
|
+
@reload_on_failure = options[:reload_on_failure]
|
|
23
|
+
@timeout = options[:timeout]
|
|
24
|
+
@adapter = options[:adapter]
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def connection
|
|
28
|
+
@connection ||= Elasticsearch::Client.new config_hash
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def config_hash
|
|
32
|
+
{
|
|
33
|
+
adapter: @adapter,
|
|
34
|
+
hosts: hosts,
|
|
35
|
+
randomize_hosts: @randomize_hosts,
|
|
36
|
+
retry_on_failure: @retry_on_failure,
|
|
37
|
+
reload_on_failure: @reload_on_failure,
|
|
38
|
+
transport_options: {
|
|
39
|
+
request: {
|
|
40
|
+
open_timeout: @timeout,
|
|
41
|
+
timeout: @timeout
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def method_missing(method_name, *args, &block)
|
|
48
|
+
return connection.send(method_name, *args, &block) if connection.respond_to?(method_name)
|
|
49
|
+
super
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def hosts
|
|
55
|
+
@hosts ||= @servers.map do |server_name, config|
|
|
56
|
+
config
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -40,28 +40,8 @@ module Waistband
|
|
|
40
40
|
super
|
|
41
41
|
end
|
|
42
42
|
|
|
43
|
-
def hosts
|
|
44
|
-
@hosts ||= @yml_config['servers'].map do |server_name, config|
|
|
45
|
-
config
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
43
|
def client
|
|
50
|
-
|
|
51
|
-
adapter: @adapter,
|
|
52
|
-
hosts: hosts,
|
|
53
|
-
randomize_hosts: true,
|
|
54
|
-
retry_on_failure: retries,
|
|
55
|
-
reload_on_failure: reload_on_failure,
|
|
56
|
-
transport_options: {
|
|
57
|
-
request: {
|
|
58
|
-
open_timeout: timeout,
|
|
59
|
-
timeout: timeout
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
Elasticsearch::Client.new client_hash
|
|
44
|
+
::Waistband::Client.from_config(client_config_hash)
|
|
65
45
|
end
|
|
66
46
|
|
|
67
47
|
def reset_timeout
|
|
@@ -70,6 +50,17 @@ module Waistband
|
|
|
70
50
|
|
|
71
51
|
private
|
|
72
52
|
|
|
53
|
+
def client_config_hash
|
|
54
|
+
{
|
|
55
|
+
'servers' => servers,
|
|
56
|
+
'randomize_hosts' => true,
|
|
57
|
+
'retry_on_failure' => retries,
|
|
58
|
+
'reload_on_failure' => reload_on_failure,
|
|
59
|
+
'timeout' => timeout,
|
|
60
|
+
'adapter' => @adapter
|
|
61
|
+
}
|
|
62
|
+
end
|
|
63
|
+
|
|
73
64
|
def load_yml_with_erb(file)
|
|
74
65
|
if defined?(ERB)
|
|
75
66
|
YAML.load(ERB.new(File.read(file)).result)
|
data/lib/waistband/index.rb
CHANGED
|
@@ -196,7 +196,12 @@ module Waistband
|
|
|
196
196
|
|
|
197
197
|
def client
|
|
198
198
|
@client ||= begin
|
|
199
|
-
|
|
199
|
+
|
|
200
|
+
_client = if client_config_hash
|
|
201
|
+
::Waistband::Client.from_config(client_config_hash)
|
|
202
|
+
else
|
|
203
|
+
::Waistband.config.client
|
|
204
|
+
end
|
|
200
205
|
|
|
201
206
|
if @log_level && Waistband.config.logger
|
|
202
207
|
_client.transport.logger = Waistband.config.logger
|
|
@@ -204,11 +209,16 @@ module Waistband
|
|
|
204
209
|
end
|
|
205
210
|
|
|
206
211
|
_client
|
|
212
|
+
|
|
207
213
|
end
|
|
208
214
|
end
|
|
209
215
|
|
|
210
216
|
private
|
|
211
217
|
|
|
218
|
+
def client_config_hash
|
|
219
|
+
config['connection']
|
|
220
|
+
end
|
|
221
|
+
|
|
212
222
|
def get_page_info(body_hash)
|
|
213
223
|
page = body_hash[:page]
|
|
214
224
|
page_size = body_hash[:page_size]
|
data/lib/waistband/version.rb
CHANGED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
development: &DEV
|
|
2
|
+
stringify: true
|
|
3
|
+
connection:
|
|
4
|
+
timeout: 2
|
|
5
|
+
retries: 5
|
|
6
|
+
reload_on_failure: true
|
|
7
|
+
servers:
|
|
8
|
+
server1:
|
|
9
|
+
host: 127.0.0.1
|
|
10
|
+
port: 9200
|
|
11
|
+
protocol: http
|
|
12
|
+
settings:
|
|
13
|
+
index:
|
|
14
|
+
number_of_shards: 1
|
|
15
|
+
number_of_replicas: 1
|
|
16
|
+
mappings:
|
|
17
|
+
event:
|
|
18
|
+
_source:
|
|
19
|
+
includes: ["*"]
|
|
20
|
+
|
|
21
|
+
test:
|
|
22
|
+
<<: *DEV
|
|
@@ -19,8 +19,9 @@ describe Waistband::Configuration do
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
it "proxies the client" do
|
|
22
|
-
expect(::Waistband.config.client).to be_a ::
|
|
23
|
-
expect(::Waistband.client).to be_a ::Elasticsearch::Transport::Client
|
|
22
|
+
expect(::Waistband.config.client).to be_a ::Waistband::Client
|
|
23
|
+
expect(::Waistband.config.client.connection).to be_a ::Elasticsearch::Transport::Client
|
|
24
|
+
expect(::Waistband.client).to be_a ::Waistband::Client
|
|
24
25
|
end
|
|
25
26
|
|
|
26
27
|
it "permits passing in an adapter to use to the client" do
|
|
@@ -42,13 +43,14 @@ describe Waistband::Configuration do
|
|
|
42
43
|
expect(::Waistband.config.send(:timeout)).to eql 2
|
|
43
44
|
end
|
|
44
45
|
|
|
45
|
-
describe '
|
|
46
|
+
describe 'hosts' do
|
|
46
47
|
|
|
47
48
|
it "returns array of all available servers' configs" do
|
|
48
|
-
|
|
49
|
-
expect(
|
|
49
|
+
hosts = config.client.send(:hosts)
|
|
50
|
+
expect(hosts).to be_an Array
|
|
51
|
+
expect(hosts.size).to eql 2
|
|
50
52
|
|
|
51
|
-
|
|
53
|
+
hosts.each_with_index do |server, i|
|
|
52
54
|
expect(server['host']).to match /127\.0\.0\.1|localhost/
|
|
53
55
|
expect(server['port']).to eql 9200
|
|
54
56
|
expect(server['protocol']).to eql 'http'
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Waistband::Index do
|
|
4
|
+
|
|
5
|
+
let(:index) { Waistband::Index.new('multi_connection_events') }
|
|
6
|
+
let(:client) { index.client }
|
|
7
|
+
|
|
8
|
+
it "grabs connection data from the index's settings" do
|
|
9
|
+
expect(client).to be_a(::Waistband::Client)
|
|
10
|
+
expect(client.connection).to be_a(::Elasticsearch::Transport::Client)
|
|
11
|
+
expect(client.instance_variable_get('@servers')).to eql({"server1"=>{"host"=>"127.0.0.1", "port"=>9200, "protocol"=>"http"}})
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "correctly sets hosts" do
|
|
15
|
+
expect(client.send(:config_hash)[:hosts]).to eql([{"host"=>"127.0.0.1", "port"=>9200, "protocol"=>"http"}])
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "works" do
|
|
19
|
+
index.delete
|
|
20
|
+
index.create
|
|
21
|
+
index.save('testing123', {ok: 'yeah'})
|
|
22
|
+
index.refresh
|
|
23
|
+
data = index.read('testing123')
|
|
24
|
+
expect(data['_source']['ok']).to eql 'yeah'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
data/spec/lib/index_spec.rb
CHANGED
|
@@ -76,6 +76,13 @@ describe Waistband::Index do
|
|
|
76
76
|
expect(result.hits).to be_an Array
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
+
it "correctly sets hosts" do
|
|
80
|
+
expect(index.client.send(:hosts)).to eql([
|
|
81
|
+
{"host" => "localhost", "port" => 9200, "protocol" => "http"},
|
|
82
|
+
{"host" => "127.0.0.1", "port" => 9200, "protocol" => "http"}
|
|
83
|
+
])
|
|
84
|
+
end
|
|
85
|
+
|
|
79
86
|
describe "storing" do
|
|
80
87
|
|
|
81
88
|
it "stores data" do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: waistband
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.15.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Jairala
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-10-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -97,6 +97,7 @@ files:
|
|
|
97
97
|
- README.md
|
|
98
98
|
- Rakefile
|
|
99
99
|
- lib/waistband.rb
|
|
100
|
+
- lib/waistband/client.rb
|
|
100
101
|
- lib/waistband/configuration.rb
|
|
101
102
|
- lib/waistband/errors.rb
|
|
102
103
|
- lib/waistband/index.rb
|
|
@@ -109,8 +110,10 @@ files:
|
|
|
109
110
|
- spec/config/waistband/waistband_events.yml
|
|
110
111
|
- spec/config/waistband/waistband_events_no_name.yml
|
|
111
112
|
- spec/config/waistband/waistband_geo.yml
|
|
113
|
+
- spec/config/waistband/waistband_multi_connection_events.yml
|
|
112
114
|
- spec/config/waistband/waistband_search.yml
|
|
113
115
|
- spec/lib/configuration_spec.rb
|
|
116
|
+
- spec/lib/index_multi_connection_spec.rb
|
|
114
117
|
- spec/lib/index_spec.rb
|
|
115
118
|
- spec/lib/result_spec.rb
|
|
116
119
|
- spec/lib/search_results_spec.rb
|
|
@@ -146,8 +149,10 @@ test_files:
|
|
|
146
149
|
- spec/config/waistband/waistband_events.yml
|
|
147
150
|
- spec/config/waistband/waistband_events_no_name.yml
|
|
148
151
|
- spec/config/waistband/waistband_geo.yml
|
|
152
|
+
- spec/config/waistband/waistband_multi_connection_events.yml
|
|
149
153
|
- spec/config/waistband/waistband_search.yml
|
|
150
154
|
- spec/lib/configuration_spec.rb
|
|
155
|
+
- spec/lib/index_multi_connection_spec.rb
|
|
151
156
|
- spec/lib/index_spec.rb
|
|
152
157
|
- spec/lib/result_spec.rb
|
|
153
158
|
- spec/lib/search_results_spec.rb
|