tire 0.3.9 → 0.3.10
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/lib/tire/dsl.rb +2 -1
- data/lib/tire/http/response.rb +4 -0
- data/lib/tire/index.rb +46 -42
- data/lib/tire/logger.rb +4 -4
- data/lib/tire/search.rb +4 -4
- data/lib/tire/version.rb +3 -3
- data/test/unit/http_response_test.rb +4 -0
- data/test/unit/tire_test.rb +7 -0
- metadata +34 -35
data/lib/tire/dsl.rb
CHANGED
@@ -16,11 +16,12 @@ module Tire
|
|
16
16
|
end
|
17
17
|
|
18
18
|
response = Configuration.client.post( "#{Configuration.url}/#{indices}/_search", payload)
|
19
|
+
raise Tire::Search::SearchRequestFailed, response.to_s if response.failure?
|
19
20
|
json = MultiJson.decode(response.body)
|
20
21
|
results = Results::Collection.new(json, options)
|
21
22
|
end
|
22
23
|
rescue Exception => error
|
23
|
-
STDERR.puts "[REQUEST FAILED] #{error.class} #{error.
|
24
|
+
STDERR.puts "[REQUEST FAILED] #{error.class} #{error.message rescue nil}\n"
|
24
25
|
raise
|
25
26
|
ensure
|
26
27
|
end
|
data/lib/tire/http/response.rb
CHANGED
data/lib/tire/index.rb
CHANGED
@@ -11,26 +11,29 @@ module Tire
|
|
11
11
|
def exists?
|
12
12
|
@response = Configuration.client.head("#{Configuration.url}/#{@name}")
|
13
13
|
@response.success?
|
14
|
+
|
14
15
|
ensure
|
15
16
|
curl = %Q|curl -I "#{Configuration.url}/#{@name}"|
|
16
|
-
logged(
|
17
|
+
logged('HEAD', curl)
|
17
18
|
end
|
18
19
|
|
19
20
|
def delete
|
20
21
|
@response = Configuration.client.delete "#{Configuration.url}/#{@name}"
|
21
|
-
|
22
|
+
@response.success?
|
23
|
+
|
22
24
|
ensure
|
23
25
|
curl = %Q|curl -X DELETE "#{Configuration.url}/#{@name}"|
|
24
|
-
logged(
|
26
|
+
logged('DELETE', curl)
|
25
27
|
end
|
26
28
|
|
27
29
|
def create(options={})
|
28
30
|
@options = options
|
29
31
|
@response = Configuration.client.post "#{Configuration.url}/#{@name}", MultiJson.encode(options)
|
30
32
|
@response.success? ? @response : false
|
33
|
+
|
31
34
|
ensure
|
32
35
|
curl = %Q|curl -X POST "#{Configuration.url}/#{@name}" -d '#{MultiJson.encode(options)}'|
|
33
|
-
logged(
|
36
|
+
logged('CREATE', curl)
|
34
37
|
end
|
35
38
|
|
36
39
|
def mapping
|
@@ -56,11 +59,9 @@ module Tire
|
|
56
59
|
@response = Configuration.client.post url, document
|
57
60
|
MultiJson.decode(@response.body)
|
58
61
|
|
59
|
-
rescue Exception => error
|
60
|
-
raise
|
61
62
|
ensure
|
62
63
|
curl = %Q|curl -X POST "#{url}" -d '#{document}'|
|
63
|
-
logged(
|
64
|
+
logged([type, id].join('/'), curl)
|
64
65
|
end
|
65
66
|
|
66
67
|
def bulk_store documents
|
@@ -92,9 +93,10 @@ module Tire
|
|
92
93
|
else
|
93
94
|
STDERR.puts "[ERROR] Too many exceptions occured, giving up. The HTTP response was: #{error.message}"
|
94
95
|
end
|
96
|
+
|
95
97
|
ensure
|
96
98
|
curl = %Q|curl -X POST "#{Configuration.url}/_bulk" -d '{... data omitted ...}'|
|
97
|
-
logged(
|
99
|
+
logged('BULK', curl)
|
98
100
|
end
|
99
101
|
end
|
100
102
|
|
@@ -132,14 +134,21 @@ module Tire
|
|
132
134
|
end
|
133
135
|
raise ArgumentError, "Please pass a document ID" unless id
|
134
136
|
|
135
|
-
|
137
|
+
url = "#{Configuration.url}/#{@name}/#{type}/#{id}"
|
138
|
+
result = Configuration.client.delete url
|
136
139
|
MultiJson.decode(result.body) if result.success?
|
140
|
+
|
141
|
+
ensure
|
142
|
+
curl = %Q|curl -X DELETE "#{url}"|
|
143
|
+
logged(id, curl)
|
137
144
|
end
|
138
145
|
|
139
146
|
def retrieve(type, id)
|
140
147
|
raise ArgumentError, "Please pass a document ID" unless id
|
141
148
|
|
142
|
-
|
149
|
+
url = "#{Configuration.url}/#{@name}/#{type}/#{id}"
|
150
|
+
@response = Configuration.client.get url
|
151
|
+
|
143
152
|
h = MultiJson.decode(@response.body)
|
144
153
|
if Configuration.wrapper == Hash then h
|
145
154
|
else
|
@@ -148,37 +157,37 @@ module Tire
|
|
148
157
|
document.update('id' => h['_id'], '_type' => h['_type'], '_index' => h['_index'], '_version' => h['_version'])
|
149
158
|
Configuration.wrapper.new(document)
|
150
159
|
end
|
160
|
+
|
161
|
+
ensure
|
162
|
+
curl = %Q|curl -X GET "#{url}"|
|
163
|
+
logged(id, curl)
|
151
164
|
end
|
152
165
|
|
153
166
|
def refresh
|
154
167
|
@response = Configuration.client.post "#{Configuration.url}/#{@name}/_refresh", ''
|
155
|
-
|
156
|
-
raise
|
168
|
+
|
157
169
|
ensure
|
158
170
|
curl = %Q|curl -X POST "#{Configuration.url}/#{@name}/_refresh"|
|
159
|
-
logged(
|
171
|
+
logged('_refresh', curl)
|
160
172
|
end
|
161
173
|
|
162
174
|
def open(options={})
|
163
175
|
# TODO: Remove the duplication in the execute > rescue > ensure chain
|
164
176
|
@response = Configuration.client.post "#{Configuration.url}/#{@name}/_open", MultiJson.encode(options)
|
165
177
|
MultiJson.decode(@response.body)['ok']
|
166
|
-
|
167
|
-
raise
|
178
|
+
|
168
179
|
ensure
|
169
180
|
curl = %Q|curl -X POST "#{Configuration.url}/#{@name}/open"|
|
170
|
-
logged(
|
181
|
+
logged('_open', curl)
|
171
182
|
end
|
172
183
|
|
173
184
|
def close(options={})
|
174
|
-
# TODO: Remove the duplication in the execute > rescue > ensure chain
|
175
185
|
@response = Configuration.client.post "#{Configuration.url}/#{@name}/_close", MultiJson.encode(options)
|
176
186
|
MultiJson.decode(@response.body)['ok']
|
177
|
-
|
178
|
-
raise
|
187
|
+
|
179
188
|
ensure
|
180
189
|
curl = %Q|curl -X POST "#{Configuration.url}/#{@name}/_close"|
|
181
|
-
logged(
|
190
|
+
logged('_close', curl)
|
182
191
|
end
|
183
192
|
|
184
193
|
def analyze(text, options={})
|
@@ -186,11 +195,10 @@ module Tire
|
|
186
195
|
params = options.to_param
|
187
196
|
@response = Configuration.client.get "#{Configuration.url}/#{@name}/_analyze?#{params}", text
|
188
197
|
@response.success? ? MultiJson.decode(@response.body) : false
|
189
|
-
|
190
|
-
raise
|
198
|
+
|
191
199
|
ensure
|
192
200
|
curl = %Q|curl -X GET "#{Configuration.url}/#{@name}/_analyze?#{params}" -d '#{text}'|
|
193
|
-
logged(
|
201
|
+
logged('_analyze', curl)
|
194
202
|
end
|
195
203
|
|
196
204
|
def register_percolator_query(name, options={}, &block)
|
@@ -198,21 +206,19 @@ module Tire
|
|
198
206
|
|
199
207
|
@response = Configuration.client.put "#{Configuration.url}/_percolator/#{@name}/#{name}", MultiJson.encode(options)
|
200
208
|
MultiJson.decode(@response.body)['ok']
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
logged(error, '_percolator', curl)
|
209
|
+
|
210
|
+
ensure
|
211
|
+
curl = %Q|curl -X PUT "#{Configuration.url}/_percolator/#{@name}/?pretty=1" -d '#{MultiJson.encode(options)}'|
|
212
|
+
logged('_percolator', curl)
|
206
213
|
end
|
207
214
|
|
208
215
|
def unregister_percolator_query(name)
|
209
216
|
@response = Configuration.client.delete "#{Configuration.url}/_percolator/#{@name}/#{name}"
|
210
217
|
MultiJson.decode(@response.body)['ok']
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
logged(error, '_percolator', curl)
|
218
|
+
|
219
|
+
ensure
|
220
|
+
curl = %Q|curl -X DELETE "#{Configuration.url}/_percolator/#{@name}"|
|
221
|
+
logged('_percolator', curl)
|
216
222
|
end
|
217
223
|
|
218
224
|
def percolate(*args, &block)
|
@@ -229,26 +235,24 @@ module Tire
|
|
229
235
|
@response = Configuration.client.get "#{Configuration.url}/#{@name}/#{type}/_percolate", MultiJson.encode(payload)
|
230
236
|
MultiJson.decode(@response.body)['matches']
|
231
237
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
curl = %Q|curl -X GET "#{Configuration.url}/#{@name}/#{type}/_percolate?pretty=1" -d '#{payload.to_json}'|
|
236
|
-
logged(error, '_percolate', curl)
|
238
|
+
ensure
|
239
|
+
curl = %Q|curl -X GET "#{Configuration.url}/#{@name}/#{type}/_percolate?pretty=1" -d '#{payload.to_json}'|
|
240
|
+
logged('_percolate', curl)
|
237
241
|
end
|
238
242
|
|
239
|
-
def logged(
|
243
|
+
def logged(endpoint='/', curl='')
|
240
244
|
if Configuration.logger
|
245
|
+
error = $!
|
241
246
|
|
242
247
|
Configuration.logger.log_request endpoint, @name, curl
|
243
248
|
|
244
|
-
code = @response ? @response.code : error.
|
249
|
+
code = @response ? @response.code : error.class rescue 200
|
245
250
|
|
246
251
|
if Configuration.logger.level.to_s == 'debug'
|
247
|
-
# FIXME: Depends on RestClient implementation
|
248
252
|
body = if @response
|
249
253
|
defined?(Yajl) ? Yajl::Encoder.encode(@response.body, :pretty => true) : MultiJson.encode(@response.body)
|
250
254
|
else
|
251
|
-
error.
|
255
|
+
error.message rescue ''
|
252
256
|
end
|
253
257
|
else
|
254
258
|
body = ''
|
data/lib/tire/logger.rb
CHANGED
@@ -7,9 +7,9 @@ module Tire
|
|
7
7
|
else
|
8
8
|
File.open(device, 'a')
|
9
9
|
end
|
10
|
-
@device.sync = true
|
10
|
+
@device.sync = true if @device.respond_to?(:sync)
|
11
11
|
@options = options
|
12
|
-
at_exit { @device.close unless @device.closed? }
|
12
|
+
at_exit { @device.close unless @device.closed? } if @device.respond_to?(:closed?) && @device.respond_to?(:close)
|
13
13
|
end
|
14
14
|
|
15
15
|
def level
|
@@ -46,8 +46,8 @@ module Tire
|
|
46
46
|
content = "# #{time}"
|
47
47
|
content += " [#{status}]"
|
48
48
|
content += " (#{took} msec)" if took
|
49
|
-
content += "\n#\n" unless json
|
50
|
-
json.each_line { |line| content += "# #{line}" } unless json
|
49
|
+
content += "\n#\n" unless json.to_s !~ /\S/
|
50
|
+
json.to_s.each_line { |line| content += "# #{line}" } unless json.to_s !~ /\S/
|
51
51
|
content += "\n\n"
|
52
52
|
write content
|
53
53
|
end
|
data/lib/tire/search.rb
CHANGED
@@ -8,10 +8,10 @@ module Tire
|
|
8
8
|
|
9
9
|
def initialize(indices=nil, options = {}, &block)
|
10
10
|
@indices = Array(indices)
|
11
|
+
@types = Array(options.delete(:type))
|
11
12
|
@options = options
|
12
|
-
@type = @options[:type]
|
13
13
|
|
14
|
-
@url = Configuration.url+['/', @indices.join(','), @
|
14
|
+
@url = Configuration.url+['/', @indices.join(','), @types.join(','), '_search'].compact.join('/').squeeze('/')
|
15
15
|
|
16
16
|
block.arity < 1 ? instance_eval(&block) : block.call(self) if block_given?
|
17
17
|
end
|
@@ -69,7 +69,7 @@ module Tire
|
|
69
69
|
@response = Configuration.client.get(@url, self.to_json)
|
70
70
|
if @response.failure?
|
71
71
|
STDERR.puts "[REQUEST FAILED] #{self.to_curl}\n"
|
72
|
-
raise SearchRequestFailed
|
72
|
+
raise SearchRequestFailed, @response.to_s
|
73
73
|
end
|
74
74
|
@json = MultiJson.decode(@response.body)
|
75
75
|
@results = Results::Collection.new(@json, @options)
|
@@ -119,7 +119,7 @@ module Tire
|
|
119
119
|
body = ''
|
120
120
|
end
|
121
121
|
|
122
|
-
Configuration.logger.log_response code || 'N/A', took || 'N/A', body
|
122
|
+
Configuration.logger.log_response code || 'N/A', took || 'N/A', body || 'N/A'
|
123
123
|
end
|
124
124
|
end
|
125
125
|
|
data/lib/tire/version.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
module Tire
|
2
|
-
VERSION = "0.3.
|
2
|
+
VERSION = "0.3.10"
|
3
3
|
|
4
4
|
CHANGELOG =<<-END
|
5
5
|
IMPORTANT CHANGES LATELY:
|
6
6
|
|
7
|
-
*
|
8
|
-
*
|
7
|
+
* Fixes and improvements for Logger [#142]
|
8
|
+
* Better handling of search exceptions [#145]
|
9
9
|
END
|
10
10
|
end
|
data/test/unit/tire_test.rb
CHANGED
@@ -46,6 +46,13 @@ module Tire
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
should "raise SearchRequestFailed when receiving bad response from backend" do
|
50
|
+
assert_raise(Search::SearchRequestFailed) do
|
51
|
+
Tire::Configuration.client.expects(:post).returns( mock_response('INDEX DOES NOT EXIST', 404) )
|
52
|
+
Tire.search 'not-existing', :query => { :query_string => { :query => 'foo' }}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
49
56
|
end
|
50
57
|
|
51
58
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tire
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10
|
12
|
+
date: 2011-11-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
|
-
requirement: &
|
16
|
+
requirement: &70120928192280 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.9.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70120928192280
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rest-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &70120928191820 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.6.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70120928191820
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: multi_json
|
38
|
-
requirement: &
|
38
|
+
requirement: &70120928191360 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70120928191360
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: activemodel
|
49
|
-
requirement: &
|
49
|
+
requirement: &70120928190900 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '3.0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70120928190900
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: bundler
|
60
|
-
requirement: &
|
60
|
+
requirement: &70120928190440 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 1.0.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70120928190440
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: yajl-ruby
|
71
|
-
requirement: &
|
71
|
+
requirement: &70120928189980 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.8.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70120928189980
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: shoulda
|
82
|
-
requirement: &
|
82
|
+
requirement: &70120928189600 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70120928189600
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: mocha
|
93
|
-
requirement: &
|
93
|
+
requirement: &70120928189140 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70120928189140
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: activerecord
|
104
|
-
requirement: &
|
104
|
+
requirement: &70120928188640 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 3.0.7
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70120928188640
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: mongoid
|
115
|
-
requirement: &
|
115
|
+
requirement: &70120928188140 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: 2.2.1
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70120928188140
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: sqlite3
|
126
|
-
requirement: &
|
126
|
+
requirement: &70120928187760 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70120928187760
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: supermodel
|
137
|
-
requirement: &
|
137
|
+
requirement: &70120928187300 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70120928187300
|
146
146
|
- !ruby/object:Gem::Dependency
|
147
147
|
name: rdoc
|
148
|
-
requirement: &
|
148
|
+
requirement: &70120932742840 !ruby/object:Gem::Requirement
|
149
149
|
none: false
|
150
150
|
requirements:
|
151
151
|
- - ! '>='
|
@@ -153,10 +153,10 @@ dependencies:
|
|
153
153
|
version: '0'
|
154
154
|
type: :development
|
155
155
|
prerelease: false
|
156
|
-
version_requirements: *
|
156
|
+
version_requirements: *70120932742840
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
158
|
name: rcov
|
159
|
-
requirement: &
|
159
|
+
requirement: &70120934930540 !ruby/object:Gem::Requirement
|
160
160
|
none: false
|
161
161
|
requirements:
|
162
162
|
- - ! '>='
|
@@ -164,10 +164,10 @@ dependencies:
|
|
164
164
|
version: '0'
|
165
165
|
type: :development
|
166
166
|
prerelease: false
|
167
|
-
version_requirements: *
|
167
|
+
version_requirements: *70120934930540
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: turn
|
170
|
-
requirement: &
|
170
|
+
requirement: &70120934930120 !ruby/object:Gem::Requirement
|
171
171
|
none: false
|
172
172
|
requirements:
|
173
173
|
- - ! '>='
|
@@ -175,7 +175,7 @@ dependencies:
|
|
175
175
|
version: '0'
|
176
176
|
type: :development
|
177
177
|
prerelease: false
|
178
|
-
version_requirements: *
|
178
|
+
version_requirements: *70120934930120
|
179
179
|
description: ! " Tire is a Ruby client for the ElasticSearch search engine/database.\n\n
|
180
180
|
\ It provides Ruby-like API for fluent communication with the ElasticSearch server\n
|
181
181
|
\ and blends with ActiveModel class for convenient usage in Rails applications.\n\n
|
@@ -289,9 +289,8 @@ homepage: http://github.com/karmi/tire
|
|
289
289
|
licenses: []
|
290
290
|
post_install_message: ! "================================================================================\n\n
|
291
291
|
\ Please check the documentation at <http://karmi.github.com/tire/>.\n\n--------------------------------------------------------------------------------\n\n
|
292
|
-
\ IMPORTANT CHANGES LATELY:\n\n *
|
293
|
-
|
294
|
-
<http://github.com/karmi/tire/commits/v0.3.9>.\n\n--------------------------------------------------------------------------------\n"
|
292
|
+
\ IMPORTANT CHANGES LATELY:\n\n * Fixes and improvements for Logger [#142]\n
|
293
|
+
\ * Better handling of search exceptions [#145]\n\n See the full changelog at <http://github.com/karmi/tire/commits/v0.3.10>.\n\n--------------------------------------------------------------------------------\n"
|
295
294
|
rdoc_options:
|
296
295
|
- --charset=UTF-8
|
297
296
|
require_paths:
|