delsolr 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.txt +11 -0
- data/lib/delsolr/configuration.rb +3 -2
- data/lib/delsolr/query_builder.rb +1 -1
- data/lib/delsolr.rb +3 -3
- data/test/test_client.rb +20 -6
- metadata +2 -2
data/README.txt
CHANGED
@@ -7,6 +7,17 @@ http://delsolr.rubyforge.org
|
|
7
7
|
DelSolr is a light weight ruby wrapper for solr. It's intention is to expose the full power of solr queries
|
8
8
|
while keeping the interface as ruby-esque as possible.
|
9
9
|
|
10
|
+
== Installation
|
11
|
+
|
12
|
+
Can be installed as a gem which is hosted on http://gemcutter.org
|
13
|
+
|
14
|
+
gem install delsolr
|
15
|
+
|
16
|
+
or as a plugin...
|
17
|
+
|
18
|
+
ruby script/plugin install git://github.com/avvo/delsolr.git
|
19
|
+
|
20
|
+
|
10
21
|
== PROBLEMS:
|
11
22
|
|
12
23
|
* Not threadsafe yet
|
@@ -1,12 +1,13 @@
|
|
1
1
|
module DelSolr
|
2
2
|
class Client
|
3
3
|
class Configuration
|
4
|
-
attr_accessor :server, :port, :timeout
|
4
|
+
attr_accessor :server, :port, :timeout, :path
|
5
5
|
|
6
|
-
def initialize(server, port, timeout =
|
6
|
+
def initialize(server, port, timeout = nil, path = nil)
|
7
7
|
@server = server
|
8
8
|
@port = port.to_i
|
9
9
|
@timeout = timeout || 120
|
10
|
+
@path = path || '/solr'
|
10
11
|
end
|
11
12
|
|
12
13
|
end
|
data/lib/delsolr.rb
CHANGED
@@ -37,7 +37,7 @@ module DelSolr
|
|
37
37
|
# [<b><tt>:shortcuts</tt></b>]
|
38
38
|
# (options) 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
39
|
def initialize(options = {})
|
40
|
-
@configuration = DelSolr::Client::Configuration.new(options[:server], options[:port], options[:timeout])
|
40
|
+
@configuration = DelSolr::Client::Configuration.new(options[:server], options[:port], options[:timeout], options[:path])
|
41
41
|
@cache = options[:cache]
|
42
42
|
@shortcuts = options[:shortcuts]
|
43
43
|
end
|
@@ -157,7 +157,7 @@ module DelSolr
|
|
157
157
|
end
|
158
158
|
|
159
159
|
if body.blank? # cache miss (or wasn't enabled)
|
160
|
-
header, body = connection.get(query_builder.request_string)
|
160
|
+
header, body = connection.get(configuration.path + query_builder.request_string)
|
161
161
|
|
162
162
|
# add to the cache if caching
|
163
163
|
if enable_caching
|
@@ -253,7 +253,7 @@ module DelSolr
|
|
253
253
|
|
254
254
|
# helper for posting data to solr
|
255
255
|
def post(buffer)
|
256
|
-
connection.post(
|
256
|
+
connection.post("#{configuration.path}/update", buffer, {'Content-type' => 'text/xml;charset=utf-8'})
|
257
257
|
end
|
258
258
|
|
259
259
|
def success?(response_body)
|
data/test/test_client.rb
CHANGED
@@ -177,26 +177,40 @@ class ClientTest < Test::Unit::TestCase
|
|
177
177
|
assert_equal(0, c.pending_documents.length)
|
178
178
|
end
|
179
179
|
|
180
|
-
def
|
181
|
-
c = setup_client
|
180
|
+
def test_query_with_path
|
181
|
+
c = setup_client(:path => '/abcsolr')
|
182
182
|
|
183
183
|
mock_query_builder = DelSolr::Client::QueryBuilder
|
184
|
-
mock_query_builder.stubs(:request_string).returns('/
|
184
|
+
mock_query_builder.stubs(:request_string).returns('/select?some_query') # mock the query builder
|
185
|
+
DelSolr::Client::QueryBuilder.stubs(:new).returns(mock_query_builder)
|
186
|
+
c.connection.expects(:get).with("/abcsolr" + mock_query_builder.request_string).returns([nil, @@response_buffer]) # mock the connection
|
187
|
+
r = c.query('standard', :query => '123')
|
188
|
+
assert(r)
|
189
|
+
assert_equal([1,3,4,5,7,8,9,10,11,12], r.ids.sort)
|
190
|
+
assert(!r.from_cache?, 'should not be from cache')
|
191
|
+
end
|
192
|
+
|
193
|
+
def test_query_with_default_path
|
194
|
+
c = setup_client
|
195
|
+
|
196
|
+
mock_query_builder = DelSolr::Client::QueryBuilder
|
197
|
+
mock_query_builder.stubs(:request_string).returns('/select?some_query') # mock the query builder
|
185
198
|
DelSolr::Client::QueryBuilder.stubs(:new).returns(mock_query_builder)
|
186
|
-
c.connection.expects(:get).with(mock_query_builder.request_string).returns([nil, @@response_buffer]) # mock the connection
|
199
|
+
c.connection.expects(:get).with("/solr" + mock_query_builder.request_string).returns([nil, @@response_buffer]) # mock the connection
|
187
200
|
r = c.query('standard', :query => '123')
|
188
201
|
assert(r)
|
189
202
|
assert_equal([1,3,4,5,7,8,9,10,11,12], r.ids.sort)
|
190
203
|
assert(!r.from_cache?, 'should not be from cache')
|
191
204
|
end
|
205
|
+
|
192
206
|
|
193
207
|
def test_query_from_cache
|
194
208
|
c = setup_client(:cache => TestCache.new)
|
195
209
|
|
196
210
|
mock_query_builder = DelSolr::Client::QueryBuilder
|
197
|
-
mock_query_builder.stubs(:request_string).returns('/
|
211
|
+
mock_query_builder.stubs(:request_string).returns('/select?some_query') # mock the query builder
|
198
212
|
DelSolr::Client::QueryBuilder.stubs(:new).returns(mock_query_builder)
|
199
|
-
c.connection.expects(:get).with(mock_query_builder.request_string).returns([nil, @@response_buffer]) # mock the connection
|
213
|
+
c.connection.expects(:get).with("/solr" + mock_query_builder.request_string).returns([nil, @@response_buffer]) # mock the connection
|
200
214
|
r = c.query('standard', :query => '123', :enable_caching => true)
|
201
215
|
assert(r)
|
202
216
|
assert_equal([1,3,4,5,7,8,9,10,11,12], r.ids.sort)
|
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.4
|
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.4
|
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.
|