rubberband 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +0 -2
- data/README.rdoc +9 -1
- data/lib/elasticsearch.rb +2 -2
- data/lib/elasticsearch/client/abstract_client.rb +23 -2
- data/lib/elasticsearch/client/admin_index.rb +3 -2
- data/lib/elasticsearch/version.rb +1 -1
- data/rubberband.gemspec +1 -2
- data/spec/admin_spec.rb +8 -0
- data/spec/connect_spec.rb +29 -0
- metadata +71 -133
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -17,7 +17,15 @@ Copyright 2010-2011 Grant Rodgers. See included LICENSE file.
|
|
17
17
|
|
18
18
|
Instantiate a client:
|
19
19
|
|
20
|
-
|
20
|
+
client = ElasticSearch.new('127.0.0.1:9200', :index => "twitter", :type => "tweet")
|
21
|
+
|
22
|
+
Instantiate a client with multiple servers:
|
23
|
+
|
24
|
+
client = ElasticSearch.new(['127.0.0.1:9200', '127.0.0.1:9201'])
|
25
|
+
|
26
|
+
Instantiate a client using a Heroku URL (this sets the default index):
|
27
|
+
|
28
|
+
client = ElasticSearch.new(ENV['ELASTICSEARCH_URL'])
|
21
29
|
|
22
30
|
API:
|
23
31
|
|
data/lib/elasticsearch.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
1
3
|
module ElasticSearch
|
2
4
|
class AbstractClient
|
3
5
|
|
@@ -5,12 +7,31 @@ module ElasticSearch
|
|
5
7
|
:transport => ElasticSearch::Transport::HTTP
|
6
8
|
}.freeze
|
7
9
|
|
8
|
-
def initialize(
|
10
|
+
def initialize(servers_or_url, options={})
|
9
11
|
@options = DEFAULTS.merge(options)
|
10
|
-
@server_list =
|
12
|
+
@server_list, @default_index, @default_type = extract_server_list_and_defaults(servers_or_url)
|
11
13
|
@current_server = @server_list.first
|
12
14
|
end
|
13
15
|
|
16
|
+
def extract_server_list_and_defaults(servers_or_url)
|
17
|
+
default_index = default_type = nil
|
18
|
+
servers = Array(servers_or_url).collect do |server|
|
19
|
+
uri = URI.parse(server)
|
20
|
+
_, default_index, default_type = uri.path.split("/")
|
21
|
+
uri.path = "" # is this expected behavior of URI? may be dangerous to rely on
|
22
|
+
uri.to_s
|
23
|
+
end
|
24
|
+
[servers, default_index, default_type]
|
25
|
+
end
|
26
|
+
|
27
|
+
def current_server
|
28
|
+
@current_server
|
29
|
+
end
|
30
|
+
|
31
|
+
def servers
|
32
|
+
@server_list
|
33
|
+
end
|
34
|
+
|
14
35
|
def inspect
|
15
36
|
"<#{self.class} @current_server=#{@current_server} @server_list=#{@server_list.inspect} @options=#{@options.inspect}>"
|
16
37
|
end
|
@@ -55,7 +55,8 @@ module ElasticSearch
|
|
55
55
|
execute(:alias_index, alias_ops, options)
|
56
56
|
end
|
57
57
|
|
58
|
-
def get_aliases(index, options={})
|
58
|
+
def get_aliases(index=default_index, options={})
|
59
|
+
index, type, options = extract_scope(options)
|
59
60
|
execute(:get_aliases, index, options)
|
60
61
|
end
|
61
62
|
|
@@ -83,7 +84,7 @@ module ElasticSearch
|
|
83
84
|
execute(:update_settings, index, settings, options)
|
84
85
|
end
|
85
86
|
|
86
|
-
def get_settings(index, options={})
|
87
|
+
def get_settings(index=default_index, options={})
|
87
88
|
execute(:get_settings, index, options)
|
88
89
|
end
|
89
90
|
|
data/rubberband.gemspec
CHANGED
@@ -26,12 +26,11 @@ Gem::Specification.new do |s|
|
|
26
26
|
]
|
27
27
|
s.licenses = ["Apache v2"]
|
28
28
|
|
29
|
-
s.add_runtime_dependency("patron", ["
|
29
|
+
s.add_runtime_dependency("patron", ["~> 0.4.12"])
|
30
30
|
s.add_runtime_dependency("yajl-ruby", [">= 0"])
|
31
31
|
s.add_development_dependency("rake", ["~> 0.9.2"])
|
32
32
|
s.add_development_dependency("rspec", ["~> 2.0"])
|
33
33
|
s.add_development_dependency("yard", [">= 0.7.0"])
|
34
|
-
s.add_development_dependency("bundler", ["~> 1.0.0"])
|
35
34
|
s.add_development_dependency("simplecov", [">= 0.3.8"])
|
36
35
|
s.add_development_dependency("mocha", ["~> 0.9.0"])
|
37
36
|
|
data/spec/admin_spec.rb
CHANGED
@@ -16,11 +16,15 @@ describe "basic ops" do
|
|
16
16
|
|
17
17
|
@client.update_mapping({"tweet" => {:properties => {:bar => {:type => "string"}}}})
|
18
18
|
@client.index_mapping(@first_index).should == {@first_index => {"tweet" => { "properties" => { "foo" => {"type" => "string" }, "bar" => { "type" => "string"}}}}}
|
19
|
+
# default should also work
|
20
|
+
@client.index_mapping.should == {@first_index => {"tweet" => { "properties" => { "foo" => {"type" => "string" }, "bar" => { "type" => "string"}}}}}
|
19
21
|
end
|
20
22
|
|
21
23
|
it "should get and update settings" do
|
22
24
|
@client.update_settings("index" => {"refresh_interval" => 30})
|
23
25
|
@client.get_settings(@first_index)[@first_index]["settings"].should include("index.refresh_interval" => "30")
|
26
|
+
# default should also work
|
27
|
+
@client.get_settings[@first_index]["settings"].should include("index.refresh_interval" => "30")
|
24
28
|
end
|
25
29
|
|
26
30
|
it "should get and update aliases" do
|
@@ -31,5 +35,9 @@ describe "basic ops" do
|
|
31
35
|
result = @client.get_aliases(@first_index)
|
32
36
|
result[@first_index]["aliases"].keys.should_not include("#{@first_index}-alias")
|
33
37
|
result[@first_index]["aliases"].keys.should include("#{@first_index}-alias2")
|
38
|
+
# default should also work
|
39
|
+
result = @client.get_aliases
|
40
|
+
result[@first_index]["aliases"].keys.should_not include("#{@first_index}-alias")
|
41
|
+
result[@first_index]["aliases"].keys.should include("#{@first_index}-alias2")
|
34
42
|
end
|
35
43
|
end
|
data/spec/connect_spec.rb
CHANGED
@@ -9,9 +9,21 @@ describe "connect" do
|
|
9
9
|
client = ElasticSearch.new(servers)
|
10
10
|
client.nodes_info.should include('cluster_name')
|
11
11
|
end
|
12
|
+
|
12
13
|
end
|
13
14
|
|
14
15
|
context "multiple servers" do
|
16
|
+
let(:servers) { ['http://127.0.0.1:9200', 'http://127.0.0.1:9201'] }
|
17
|
+
|
18
|
+
it 'should set servers array' do
|
19
|
+
client = ElasticSearch.new(servers, :auto_discovery => false)
|
20
|
+
client.servers.should == servers
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'should choose a server to connect to' do
|
24
|
+
client = ElasticSearch.new(servers, :auto_discovery => false)
|
25
|
+
servers.should include(client.current_server)
|
26
|
+
end
|
15
27
|
end
|
16
28
|
|
17
29
|
context 'invalid server' do
|
@@ -29,4 +41,21 @@ describe "connect" do
|
|
29
41
|
expect { ElasticSearch.new(servers).nodes_info }.to raise_error(ElasticSearch::ConnectionFailed)
|
30
42
|
end
|
31
43
|
end
|
44
|
+
|
45
|
+
context 'server url with index' do
|
46
|
+
let(:servers) { 'http://127.0.0.1:9200/test_index' }
|
47
|
+
|
48
|
+
it 'should set default_index' do
|
49
|
+
client = ElasticSearch.new(servers, :auto_discovery => false)
|
50
|
+
client.current_server.should == 'http://127.0.0.1:9200'
|
51
|
+
client.default_index.should == 'test_index'
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should set default_type' do
|
55
|
+
client = ElasticSearch.new(servers + "/test_type", :auto_discovery => false)
|
56
|
+
client.current_server.should == 'http://127.0.0.1:9200'
|
57
|
+
client.default_index.should == 'test_index'
|
58
|
+
client.default_type.should == 'test_type'
|
59
|
+
end
|
60
|
+
end
|
32
61
|
end
|
metadata
CHANGED
@@ -1,156 +1,102 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubberband
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 5
|
10
|
-
version: 0.1.5
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Grant Rodgers
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: patron
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &16575640 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.4.12
|
32
22
|
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: yajl-ruby
|
36
23
|
prerelease: false
|
37
|
-
|
24
|
+
version_requirements: *16575640
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: yajl-ruby
|
27
|
+
requirement: &16575000 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
46
33
|
type: :runtime
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: rake
|
50
34
|
prerelease: false
|
51
|
-
|
35
|
+
version_requirements: *16575000
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &16574340 !ruby/object:Gem::Requirement
|
52
39
|
none: false
|
53
|
-
requirements:
|
40
|
+
requirements:
|
54
41
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
hash: 63
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
- 9
|
60
|
-
- 2
|
42
|
+
- !ruby/object:Gem::Version
|
61
43
|
version: 0.9.2
|
62
44
|
type: :development
|
63
|
-
version_requirements: *id003
|
64
|
-
- !ruby/object:Gem::Dependency
|
65
|
-
name: rspec
|
66
45
|
prerelease: false
|
67
|
-
|
46
|
+
version_requirements: *16574340
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: &16573760 !ruby/object:Gem::Requirement
|
68
50
|
none: false
|
69
|
-
requirements:
|
51
|
+
requirements:
|
70
52
|
- - ~>
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
|
73
|
-
segments:
|
74
|
-
- 2
|
75
|
-
- 0
|
76
|
-
version: "2.0"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.0'
|
77
55
|
type: :development
|
78
|
-
version_requirements: *id004
|
79
|
-
- !ruby/object:Gem::Dependency
|
80
|
-
name: yard
|
81
56
|
prerelease: false
|
82
|
-
|
57
|
+
version_requirements: *16573760
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: yard
|
60
|
+
requirement: &16573180 !ruby/object:Gem::Requirement
|
83
61
|
none: false
|
84
|
-
requirements:
|
85
|
-
- -
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
hash: 3
|
88
|
-
segments:
|
89
|
-
- 0
|
90
|
-
- 7
|
91
|
-
- 0
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
92
65
|
version: 0.7.0
|
93
66
|
type: :development
|
94
|
-
version_requirements: *id005
|
95
|
-
- !ruby/object:Gem::Dependency
|
96
|
-
name: bundler
|
97
67
|
prerelease: false
|
98
|
-
|
99
|
-
|
100
|
-
requirements:
|
101
|
-
- - ~>
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
hash: 23
|
104
|
-
segments:
|
105
|
-
- 1
|
106
|
-
- 0
|
107
|
-
- 0
|
108
|
-
version: 1.0.0
|
109
|
-
type: :development
|
110
|
-
version_requirements: *id006
|
111
|
-
- !ruby/object:Gem::Dependency
|
68
|
+
version_requirements: *16573180
|
69
|
+
- !ruby/object:Gem::Dependency
|
112
70
|
name: simplecov
|
113
|
-
|
114
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
71
|
+
requirement: &16572580 !ruby/object:Gem::Requirement
|
115
72
|
none: false
|
116
|
-
requirements:
|
117
|
-
- -
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
hash: 3
|
120
|
-
segments:
|
121
|
-
- 0
|
122
|
-
- 3
|
123
|
-
- 8
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
124
76
|
version: 0.3.8
|
125
77
|
type: :development
|
126
|
-
version_requirements: *id007
|
127
|
-
- !ruby/object:Gem::Dependency
|
128
|
-
name: mocha
|
129
78
|
prerelease: false
|
130
|
-
|
79
|
+
version_requirements: *16572580
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: mocha
|
82
|
+
requirement: &16571980 !ruby/object:Gem::Requirement
|
131
83
|
none: false
|
132
|
-
requirements:
|
84
|
+
requirements:
|
133
85
|
- - ~>
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
hash: 59
|
136
|
-
segments:
|
137
|
-
- 0
|
138
|
-
- 9
|
139
|
-
- 0
|
86
|
+
- !ruby/object:Gem::Version
|
140
87
|
version: 0.9.0
|
141
88
|
type: :development
|
142
|
-
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *16571980
|
143
91
|
description: An ElasticSearch client with ThriftClient-like failover handling.
|
144
|
-
email:
|
92
|
+
email:
|
145
93
|
- grantr@gmail.com
|
146
94
|
executables: []
|
147
|
-
|
148
95
|
extensions: []
|
149
|
-
|
150
|
-
extra_rdoc_files:
|
96
|
+
extra_rdoc_files:
|
151
97
|
- LICENSE
|
152
98
|
- README.rdoc
|
153
|
-
files:
|
99
|
+
files:
|
154
100
|
- .autotest
|
155
101
|
- .gitignore
|
156
102
|
- .rspec
|
@@ -195,39 +141,31 @@ files:
|
|
195
141
|
- spec/type_spec.rb
|
196
142
|
- vendor/elasticsearch/elasticsearch.thrift
|
197
143
|
homepage: http://github.com/grantr/rubberband
|
198
|
-
licenses:
|
144
|
+
licenses:
|
199
145
|
- Apache v2
|
200
146
|
post_install_message:
|
201
147
|
rdoc_options: []
|
202
|
-
|
203
|
-
require_paths:
|
148
|
+
require_paths:
|
204
149
|
- lib
|
205
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
150
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
206
151
|
none: false
|
207
|
-
requirements:
|
208
|
-
- -
|
209
|
-
- !ruby/object:Gem::Version
|
210
|
-
|
211
|
-
|
212
|
-
- 0
|
213
|
-
version: "0"
|
214
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
|
+
requirements:
|
153
|
+
- - ! '>='
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
156
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
157
|
none: false
|
216
|
-
requirements:
|
217
|
-
- -
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
|
220
|
-
segments:
|
221
|
-
- 0
|
222
|
-
version: "0"
|
158
|
+
requirements:
|
159
|
+
- - ! '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
223
162
|
requirements: []
|
224
|
-
|
225
163
|
rubyforge_project: rubberband
|
226
|
-
rubygems_version: 1.8.
|
164
|
+
rubygems_version: 1.8.11
|
227
165
|
signing_key:
|
228
166
|
specification_version: 3
|
229
167
|
summary: An ElasticSearch client with ThriftClient-like failover handling.
|
230
|
-
test_files:
|
168
|
+
test_files:
|
231
169
|
- spec/admin_spec.rb
|
232
170
|
- spec/bulk_spec.rb
|
233
171
|
- spec/connect_spec.rb
|