delsolr 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/delsolr.rb +10 -1
- data/test/test_client.rb +24 -0
- metadata +2 -2
data/lib/delsolr.rb
CHANGED
@@ -35,7 +35,10 @@ module DelSolr
|
|
35
35
|
# (optional) a cache instance (any object the supports get and set)
|
36
36
|
#
|
37
37
|
# [<b><tt>:shortcuts</tt></b>]
|
38
|
-
# (
|
38
|
+
# (optional) a list of values in the doc fields to generate short cuts for (ie: [:scores, :id], you will be able to call <tt>rsp.scores</tt> and have it return an array of scores, likewise for <tt>ids</tt>.) Defaults to [:id, :unique_id, :score]
|
39
|
+
#
|
40
|
+
# [<b><tt>:path</tt></b>]
|
41
|
+
# (optional) the path of the solr install (defaults to "/solr")
|
39
42
|
def initialize(options = {})
|
40
43
|
@configuration = DelSolr::Client::Configuration.new(options[:server], options[:port], options[:timeout], options[:path])
|
41
44
|
@cache = options[:cache]
|
@@ -159,6 +162,12 @@ module DelSolr
|
|
159
162
|
if body.blank? # cache miss (or wasn't enabled)
|
160
163
|
header, body = connection.get(configuration.path + query_builder.request_string)
|
161
164
|
|
165
|
+
# We get UTF-8 from Solr back, make sure the string knows about it
|
166
|
+
# when running on Ruby >= 1.9
|
167
|
+
if body.respond_to?(:force_encoding)
|
168
|
+
body.force_encoding("UTF-8")
|
169
|
+
end
|
170
|
+
|
162
171
|
# add to the cache if caching
|
163
172
|
if enable_caching
|
164
173
|
begin
|
data/test/test_client.rb
CHANGED
@@ -221,6 +221,30 @@ class ClientTest < Test::Unit::TestCase
|
|
221
221
|
assert_equal([1,3,4,5,7,8,9,10,11,12], r.ids.sort)
|
222
222
|
assert(r.from_cache?, 'this one should be from the cache')
|
223
223
|
end
|
224
|
+
|
225
|
+
if RUBY_VERSION.to_f >= 1.9
|
226
|
+
def test_query_encoding_ruby19_ut8
|
227
|
+
c = setup_client
|
228
|
+
|
229
|
+
mock_query_builder = DelSolr::Client::QueryBuilder
|
230
|
+
mock_query_builder.stubs(:request_string).returns('/select?some_query') # mock the query builder
|
231
|
+
DelSolr::Client::QueryBuilder.stubs(:new).returns(mock_query_builder)
|
232
|
+
c.connection.expects(:get).with("/solr" + mock_query_builder.request_string).returns([nil, @@response_buffer]) # mock the connection
|
233
|
+
r = c.query('standard', :query => '123')
|
234
|
+
assert(r)
|
235
|
+
|
236
|
+
ensure_encoding = lambda { |v|
|
237
|
+
case v
|
238
|
+
when String; assert_equal 'UTF-8', v.encoding.name
|
239
|
+
when Array; v.each(&ensure_encoding)
|
240
|
+
when Hash; (v.keys + v.values).each(&ensure_encoding)
|
241
|
+
end
|
242
|
+
}
|
243
|
+
|
244
|
+
ensure_encoding.call(r.raw_response)
|
245
|
+
end
|
246
|
+
end
|
247
|
+
|
224
248
|
|
225
249
|
private
|
226
250
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delsolr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben VandenBos
|
@@ -63,7 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
63
|
requirements: []
|
64
64
|
|
65
65
|
rubyforge_project:
|
66
|
-
rubygems_version: 1.3.
|
66
|
+
rubygems_version: 1.3.5
|
67
67
|
signing_key:
|
68
68
|
specification_version: 3
|
69
69
|
summary: DelSolr is a light weight ruby wrapper for solr. It's intention is to expose the full power of solr queries while keeping the interface as ruby-esque as possible.
|