solr_wrapper 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f93c8c8e3f7fa76db872d7a78d3248f92cf2339b
4
- data.tar.gz: ba80a71c7d8ca4efe0f75332fe36e58b3da1e4b2
3
+ metadata.gz: 02801c03fb674022382afba55cb728b5ec82d177
4
+ data.tar.gz: e042c59c01ab0ed69f48a0415032c5e5f798ae4b
5
5
  SHA512:
6
- metadata.gz: d943fd2c94733672e648d3496b581ace396de3d553be1d7e006f1e085598fdf1acde4a0ca60e0ff2f90cb32bf6c13b26d77f6113ae7ff1a286679a99f232542b
7
- data.tar.gz: 916ab091e2af478a5a18f4a3fc782ea9dd65ebe0fbcea97203bc50f9178faec61ed7d7a4d7e8d153668c02ff80024a8174221431225d8a8e1d8a63a214fe80b7
6
+ metadata.gz: 36168cce73a5fef10a0e683068363955f94f23cfc92132f6bf856b89d75605f9a804506aa8d2cd6bdc07acdc930f5053fb43a6aab7eeac311eb9d427b9f04d06
7
+ data.tar.gz: c9e006036531e1e31a23b3babda62345a1c6742d741d7ede1fa4f2eeac579f3dd3372dacfc9f6be6924dfdee883bc594b9b1f39882fe17f52db90f077cd16466
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
data/.travis.yml CHANGED
@@ -2,7 +2,7 @@ language: ruby
2
2
  sudo: false
3
3
  rvm:
4
4
  - 2.2.0
5
- - jruby
5
+ - jruby-9.0.1.0
6
6
  cache:
7
7
  directories:
8
8
  - /tmp/solr-5.1.0
data/README.md CHANGED
@@ -11,18 +11,67 @@ end
11
11
  Or with Solr and a solr collection:
12
12
 
13
13
  ```ruby
14
- subject.wrap do |solr|
15
- solr.with_collection(dir: File.join(FIXTURES_DIR, "basic_configs")) do |collection_name|
16
- end
14
+ SolrWrapper.wrap do |solr|
15
+ solr.with_collection(dir: File.join(FIXTURES_DIR, "basic_configs")) do |collection_name|
17
16
  end
17
+ end
18
18
  ```
19
19
 
20
20
  ## Basic Options
21
21
 
22
22
  ```ruby
23
- SolrWrapper.wrap port: 8983, verbose: true, managed: true
23
+ SolrWrapper.wrap port: 8983,
24
+ verbose: true,
25
+ managed: true,
26
+ instance_dir: '/opt/solr'
24
27
  ```
25
28
 
29
+ Options:
30
+
31
+ |Option | |
32
+ |---------------|-----------------------------------------|
33
+ | instance_dir | Directory to store the solr index files |
34
+ | url | URL of the Zip file to download |
35
+ | version | Solr version to download and install |
36
+ | port | port to run Solr on |
37
+ | version_file | Local path to store the currently installed version |
38
+ | download_path | Local path for storing the downloaded Solr zip file |
39
+ | md5sum | Path/URL to MD5 checksum |
40
+ | solr_xml | Path to Solr configuration |
41
+ | verbose | (Boolean) |
42
+ | managed | (Boolean) |
43
+ | ignore_md5sum | (Boolean) |
44
+ | solr_options | (Hash) |
45
+ | env | (Hash) |
46
+
26
47
  ```ruby
27
- solr.with_collection(name: 'collection_name', dir: 'path_to_solr_confiigs')
28
- ```
48
+ solr.with_collection(name: 'collection_name', dir: 'path_to_solr_configs')
49
+ ```
50
+
51
+ ## From the command line
52
+
53
+ ```console
54
+ $ solr_wrapper -p 8983
55
+ ```
56
+
57
+ ## Rake tasks
58
+
59
+ SolrWrapper provides rake tasks for installing, starting and stopping solr. To include the tasks in your Rake environment, add this to your Rakefile
60
+
61
+ ```ruby
62
+ require 'solr_wrapper/rake_task'
63
+ ```
64
+
65
+ You can configure the tasks by setting `SolrWrapper.default_instance_options`. For example:
66
+
67
+ ```ruby
68
+ SolrWrapper.default_instance_options = {
69
+ verbose: true,
70
+ cloud: true,
71
+ port: '8888',
72
+ version: '5.3.1',
73
+ instance_dir: 'solr',
74
+ download_dir: 'tmp'
75
+ }
76
+ require 'solr_wrapper/rake_task'
77
+ ```
data/exe/solr_wrapper CHANGED
@@ -4,6 +4,7 @@ require 'solr_wrapper'
4
4
  require 'optparse'
5
5
 
6
6
  options = {}
7
+ collection_options = {}
7
8
  OptionParser.new do |opts|
8
9
  opts.banner = "Usage: solr_wrapper [options]"
9
10
 
@@ -18,13 +19,36 @@ OptionParser.new do |opts|
18
19
  opts.on("-pPORT", "--port PORT", "Specify the port Solr should run at (default: 8983)") do |p|
19
20
  options[:port] = p
20
21
  end
22
+
23
+ opts.on("-c", "--cloud", "Run solr in cloud mode") do |c|
24
+ options[:cloud] = c
25
+ end
26
+
27
+ opts.on("-iDIR", "--instance_directory DIR", "Install/use solr at the given directory") do |d|
28
+ options[:instance_dir] = d
29
+ end
30
+
31
+ opts.on("-lDIR", "--lib_directory DIR", "Grab extra libs from this directory") do |d|
32
+ options[:extra_lib_dir] = d
33
+ end
34
+
35
+ opts.on("-nNAME", "--collection_name NAME", "Create a default solr collection with the given name") do |c|
36
+ collection_options[:name] = c
37
+ end
38
+
39
+ opts.on("-dDIR", "--collection_config DIR", "Create a default solr collection with the files from the given directory") do |d|
40
+ collection_options[:dir] = d
41
+ end
42
+
21
43
  end.parse!
22
44
 
23
45
  # default to verbose
24
46
  options[:verbose] = true if options[:verbose].nil?
25
47
 
26
48
  SolrWrapper.wrap(options) do |conn|
27
- while conn.status
28
- sleep 1
49
+ conn.with_collection(collection_options) do
50
+ while conn.status
51
+ sleep 1
52
+ end
29
53
  end
30
54
  end
@@ -15,15 +15,18 @@ module SolrWrapper
15
15
  ##
16
16
  # @param [Hash] options
17
17
  # @option options [String] :url
18
- # @option options [String] :version
19
- # @option options [String] :port
20
- # @option options [String] :version_file
21
- # @option options [String] :instance_dir
22
- # @option options [String] :download_path
23
- # @option options [String] :md5sum
24
- # @option options [String] :solr_xml
25
- # @option options [Boolean] :verbose
26
- # @option options [Boolean] :managed
18
+ # @option options [String] :instance_dir Directory to store the solr index files
19
+ # @option options [String] :version Solr version to download and install
20
+ # @option options [String] :port port to run Solr on
21
+ # @option options [Boolean] :cloud Run solr in cloud mode
22
+ # @option options [String] :version_file Local path to store the currently installed version
23
+ # @option options [String] :download_dir Local directory to store the downloaded Solr zip and its md5 file in (overridden by :download_path)
24
+ # @option options [String] :download_path Local path for storing the downloaded Solr zip file
25
+ # @option options [Boolean] :validate Should solr_wrapper download a new md5 and (re-)validate the zip file? (default: trueF)
26
+ # @option options [String] :md5sum Path/URL to MD5 checksum
27
+ # @option options [String] :solr_xml Path to Solr configuration
28
+ # @option options [String] :extra_lib_dir Path to directory containing extra libraries to copy into instance_dir/lib
29
+ # @option options [Boolean] :verbose return verbose info when running solr commands
27
30
  # @option options [Boolean] :ignore_md5sum
28
31
  # @option options [Hash] :solr_options
29
32
  # @option options [Hash] :env
@@ -32,6 +35,7 @@ module SolrWrapper
32
35
  end
33
36
 
34
37
  def wrap(&_block)
38
+ extract_and_configure
35
39
  start
36
40
  yield self
37
41
  ensure
@@ -41,9 +45,9 @@ module SolrWrapper
41
45
  ##
42
46
  # Start Solr and wait for it to become available
43
47
  def start
44
- extract
48
+ extract_and_configure
45
49
  if managed?
46
- exec('start', p: port)
50
+ exec('start', p: port, c: options[:cloud])
47
51
 
48
52
  # Wait for solr to start
49
53
  unless status
@@ -67,12 +71,20 @@ module SolrWrapper
67
71
  @pid = nil
68
72
  end
69
73
 
74
+ ##
75
+ # Stop Solr and wait for it to finish exiting
76
+ def restart
77
+ if managed? && started?
78
+ exec('restart', p: port, c: options[:cloud])
79
+ end
80
+ end
81
+
70
82
  ##
71
83
  # Check the status of a managed Solr service
72
84
  def status
73
85
  return true unless managed?
74
86
 
75
- out = exec('status', output: true).read
87
+ out = exec('status').read
76
88
  out =~ /running on port #{port}/
77
89
  end
78
90
 
@@ -90,7 +102,10 @@ module SolrWrapper
90
102
  def create(options = {})
91
103
  options[:name] ||= SecureRandom.hex
92
104
 
93
- exec("create", c: options[:name], d: options[:dir], p: port)
105
+ create_options = { p: port }
106
+ create_options[:c] = options[:name] if options[:name]
107
+ create_options[:d] = options[:dir] if options[:dir]
108
+ exec("create", create_options)
94
109
 
95
110
  options[:name]
96
111
  end
@@ -108,6 +123,8 @@ module SolrWrapper
108
123
  # @option options [String] :name
109
124
  # @option options [String] :dir
110
125
  def with_collection(options = {})
126
+ return yield if options.empty?
127
+
111
128
  name = create(options)
112
129
  begin
113
130
  yield name
@@ -126,24 +143,48 @@ module SolrWrapper
126
143
  # Clean up any files solr_wrapper may have downloaded
127
144
  def clean!
128
145
  stop
129
- FileUtils.remove_entry(download_path) if File.exists? download_path
146
+ remove_instance_dir!
147
+ FileUtils.remove_entry(download_path) if File.exists?(download_path)
130
148
  FileUtils.remove_entry(tmp_save_dir, true) if File.exists? tmp_save_dir
131
- FileUtils.remove_entry(instance_dir, true) if File.exists? instance_dir
132
149
  FileUtils.remove_entry(md5sum_path) if File.exists? md5sum_path
133
150
  FileUtils.remove_entry(version_file) if File.exists? version_file
134
151
  end
135
152
 
153
+ ##
154
+ # Clean up any files in the Solr instance dir
155
+ def remove_instance_dir!
156
+ FileUtils.remove_entry(instance_dir, true) if File.exists? instance_dir
157
+ end
158
+
136
159
  ##
137
160
  # Get a (likely) URL to the solr instance
138
161
  def url
139
162
  "http://127.0.0.1:#{port}/solr/"
140
163
  end
141
164
 
142
- protected
165
+ def configure
166
+ raise_error_unless_extracted
167
+ FileUtils.cp options[:solr_xml], File.join(instance_dir, 'server', 'solr', 'solr.xml') if options[:solr_xml]
168
+ FileUtils.cp_r File.join(options[:extra_lib_dir], '.'), File.join(instance_dir, 'server', 'solr', 'lib') if options[:extra_lib_dir]
169
+ end
170
+
171
+ def instance_dir
172
+ @instance_dir ||= options.fetch(:instance_dir, File.join(Dir.tmpdir, File.basename(download_url, ".zip")))
173
+ end
174
+
175
+ def extract_and_configure
176
+ instance_dir = extract
177
+ configure
178
+ instance_dir
179
+ end
143
180
 
144
181
  # rubocop:disable Lint/RescueException
182
+
183
+ # extract a copy of solr to instance_dir
184
+ # Does noting if solr already exists at instance_dir
185
+ # @return [String] instance_dir Directory where solr has been installed
145
186
  def extract
146
- return solr_dir if File.exists?(solr_binary) && extracted_version == version
187
+ return instance_dir if extracted?
147
188
 
148
189
  zip_path = download
149
190
 
@@ -162,32 +203,37 @@ module SolrWrapper
162
203
  end
163
204
 
164
205
  begin
165
- FileUtils.remove_dir(solr_dir, true)
166
- FileUtils.cp_r File.join(tmp_save_dir, File.basename(download_url, ".zip")), solr_dir
206
+ FileUtils.remove_dir(instance_dir, true)
207
+ FileUtils.cp_r File.join(tmp_save_dir, File.basename(download_url, ".zip")), instance_dir
167
208
  self.extracted_version = version
168
209
  FileUtils.chmod 0755, solr_binary
169
210
  rescue Exception => e
170
- abort "Unable to copy #{tmp_save_dir} to #{solr_dir}: #{e.message}"
211
+ abort "Unable to copy #{tmp_save_dir} to #{instance_dir}: #{e.message}"
171
212
  end
172
213
 
173
- configure
174
-
175
- solr_dir
214
+ instance_dir
176
215
  ensure
177
216
  FileUtils.remove_entry tmp_save_dir if File.exists? tmp_save_dir
178
217
  end
179
218
  # rubocop:enable Lint/RescueException
180
219
 
220
+ protected
221
+
222
+ def extracted?
223
+ File.exists?(solr_binary) && extracted_version == version
224
+ end
225
+
181
226
  def download
182
227
  unless File.exists?(download_path) && validate?(download_path)
183
228
  fetch_with_progressbar download_url, download_path
184
229
  validate! download_path
185
230
  end
186
-
187
231
  download_path
188
232
  end
189
233
 
190
234
  def validate?(file)
235
+ return true if options[:validate] == false
236
+
191
237
  Digest::MD5.file(file).hexdigest == expected_md5sum
192
238
  end
193
239
 
@@ -199,10 +245,27 @@ module SolrWrapper
199
245
 
200
246
  ##
201
247
  # Run a bin/solr command
248
+ # @param [String] cmd command to run
249
+ # @param [Hash] options key-value pairs to transform into command line arguments
250
+ # @return [StringIO] an IO object for the executed shell command
202
251
  # @see https://github.com/apache/lucene-solr/blob/trunk/solr/bin/solr
252
+ # If you want to pass a boolean flag, include it in the +options+ hash with its value set to +true+
253
+ # the key will be converted into a boolean flag for you.
254
+ # @example start solr in cloud mode on port 8983
255
+ # exec('start', {p: '8983', c: true})
203
256
  def exec(cmd, options = {})
204
- output = !!options.delete(:output)
205
- args = [solr_binary, cmd] + solr_options.merge(options).map { |k, v| ["-#{k}", "#{v}"] }.flatten
257
+ silence_output = !options.delete(:output)
258
+
259
+ args = [solr_binary, cmd] + solr_options.merge(options).map do |k, v|
260
+ case v
261
+ when true
262
+ "-#{k}"
263
+ when false, nil
264
+ # don't return anything
265
+ else
266
+ ["-#{k}", "#{v}"]
267
+ end
268
+ end.flatten.compact
206
269
 
207
270
  if IO.respond_to? :popen4
208
271
  # JRuby
@@ -210,44 +273,40 @@ module SolrWrapper
210
273
  pid, input, output, error = IO.popen4(env_str + " " + args.join(" "))
211
274
  @pid = pid
212
275
  stringio = StringIO.new
213
- if verbose? && !output
276
+ if verbose? && !silence_output
214
277
  IO.copy_stream(output, $stderr)
215
278
  IO.copy_stream(error, $stderr)
216
279
  else
217
280
  IO.copy_stream(output, stringio)
218
281
  IO.copy_stream(error, stringio)
219
282
  end
283
+
220
284
  input.close
221
285
  output.close
222
286
  error.close
223
-
224
- stringio.rewind
225
-
226
- if $? != 0
227
- raise "Failed to execute solr #{cmd}: #{stringio.read}"
228
- end
229
-
230
- stringio
287
+ exit_status = Process.waitpid2(@pid).last
231
288
  else
232
289
  IO.popen(env, args + [err: [:child, :out]]) do |io|
233
290
  stringio = StringIO.new
234
- if verbose? && !output
291
+
292
+ if verbose? && !silence_output
235
293
  IO.copy_stream(io, $stderr)
236
294
  else
237
295
  IO.copy_stream(io, stringio)
238
296
  end
297
+
239
298
  @pid = io.pid
240
299
 
241
300
  _, exit_status = Process.wait2(io.pid)
242
- stringio.rewind
243
-
244
- if exit_status != 0
245
- raise "Failed to execute solr #{cmd}: #{stringio.read}"
246
- end
247
-
248
- stringio
249
301
  end
250
302
  end
303
+
304
+ stringio.rewind
305
+ if exit_status != 0
306
+ raise "Failed to execute solr #{cmd}: #{stringio.read}"
307
+ end
308
+
309
+ stringio
251
310
  end
252
311
 
253
312
  private
@@ -290,11 +349,13 @@ module SolrWrapper
290
349
  end
291
350
 
292
351
  def default_download_path
293
- File.join(Dir.tmpdir, File.basename(download_url))
352
+ File.join(download_dir, File.basename(download_url))
294
353
  end
295
354
 
296
- def solr_dir
297
- @solr_dir ||= options.fetch(:instance_dir, File.join(Dir.tmpdir, File.basename(download_url, ".zip")))
355
+ def download_dir
356
+ @download_dir ||= options.fetch(:download_dir, Dir.tmpdir)
357
+ FileUtils.mkdir_p @download_dir
358
+ @download_dir
298
359
  end
299
360
 
300
361
  def verbose?
@@ -302,11 +363,11 @@ module SolrWrapper
302
363
  end
303
364
 
304
365
  def managed?
305
- !!options.fetch(:managed, true)
366
+ File.exists?(instance_dir)
306
367
  end
307
368
 
308
369
  def version_file
309
- options.fetch(:version_file, File.join(solr_dir, "VERSION"))
370
+ options.fetch(:version_file, File.join(instance_dir, "VERSION"))
310
371
  end
311
372
 
312
373
  def expected_md5sum
@@ -314,11 +375,11 @@ module SolrWrapper
314
375
  end
315
376
 
316
377
  def solr_binary
317
- File.join(solr_dir, "bin", "solr")
378
+ File.join(instance_dir, "bin", "solr")
318
379
  end
319
380
 
320
381
  def md5sum_path
321
- File.join(Dir.tmpdir, File.basename(md5url))
382
+ File.join(download_dir, File.basename(md5url))
322
383
  end
323
384
 
324
385
  def tmp_save_dir
@@ -357,8 +418,8 @@ module SolrWrapper
357
418
  end
358
419
  end
359
420
 
360
- def configure
361
- FileUtils.cp options[:solr_xml], File.join(solr_dir, "server", "solr", "solr.xml") if options[:solr_xml]
421
+ def raise_error_unless_extracted
422
+ raise RuntimeError, "there is no solr instance at #{instance_dir}. Run SolrWrapper.extract first." unless extracted?
362
423
  end
363
424
  end
364
425
  end
@@ -0,0 +1,5 @@
1
+ module SolrWrapper
2
+ module RakeTask
3
+ Dir[File.expand_path(File.join(File.dirname(__FILE__),"tasks/*.rake"))].each { |ext| load ext } if defined?(Rake)
4
+ end
5
+ end
@@ -0,0 +1,46 @@
1
+ require 'solr_wrapper'
2
+
3
+ ## These tasks get loaded into the host context when solr_wrapper is required
4
+ namespace :solr do
5
+ desc "Load the solr options and solr instance"
6
+ task :environment do
7
+ SolrWrapper.default_instance_options[:download_dir] ||= Rails.root.to_s + '/tmp' if defined? Rails
8
+ @solr_instance = SolrWrapper.default_instance
9
+ end
10
+
11
+ desc 'Install a clean version of solr. Replaces the existing copy if there is one.'
12
+ task clean: :environment do
13
+ puts "Installing clean version of solr at #{File.expand_path(@solr_instance.instance_dir)}"
14
+ @solr_instance.remove_instance_dir!
15
+ @solr_instance.extract_and_configure
16
+ end
17
+
18
+ desc 'start solr'
19
+ task start: :environment do
20
+ begin
21
+ puts "Starting solr at #{File.expand_path(@solr_instance.instance_dir)} with options #{@solr_instance.options}"
22
+ @solr_instance.start
23
+ rescue => e
24
+ if e.message.include?("Port #{@solr_instance.port} is already being used by another process")
25
+ puts "FAILED. Port #{@solr_instance.port} is already being used."
26
+ puts " Did you already have solr running?"
27
+ puts " a) YES: Continue as you were. Solr is running."
28
+ puts " b) NO: Either set SOLR_OPTIONS[:port] to a different value or stop the process that's using port #{@solr_instance.port}."
29
+ else
30
+ raise "Failed to start solr. #{e.class}: #{e.message}"
31
+ end
32
+ end
33
+ end
34
+
35
+ desc 'restart solr'
36
+ task restart: :environment do
37
+ puts "Restarting solr"
38
+ @solr_instance.restart
39
+ end
40
+
41
+ desc 'stop solr'
42
+ task stop: :environment do
43
+ @solr_instance.stop
44
+ end
45
+
46
+ end
@@ -1,3 +1,3 @@
1
1
  module SolrWrapper
2
- VERSION = '0.2.0'
2
+ VERSION = '0.3.0'
3
3
  end
data/lib/solr_wrapper.rb CHANGED
@@ -3,11 +3,15 @@ require 'solr_wrapper/instance'
3
3
 
4
4
  module SolrWrapper
5
5
  def self.default_solr_version
6
- '5.3.0'
6
+ '5.3.1'
7
+ end
8
+
9
+ def self.default_instance_options
10
+ @default_instance_options ||= {}
7
11
  end
8
12
 
9
13
  def self.default_instance(options = {})
10
- @default_instance ||= SolrWrapper::Instance.new options
14
+ @default_instance ||= SolrWrapper::Instance.new default_instance_options.merge(options)
11
15
  end
12
16
 
13
17
  ##
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SolrWrapper::Instance do
4
- subject { SolrWrapper::Instance.new }
4
+ let(:solr_instance) { SolrWrapper::Instance.new }
5
+ subject { solr_instance }
5
6
  let(:client) { SimpleSolrClient::Client.new("http://localhost:#{subject.port}/solr/") }
6
7
  describe "#with_collection" do
7
8
  it "should create a new anonymous collection" do
@@ -16,4 +17,25 @@ describe SolrWrapper::Instance do
16
17
  end
17
18
  end
18
19
  end
20
+ describe 'exec' do
21
+ let(:cmd) { 'start' }
22
+ let(:options) { { p: '4098', help: true } }
23
+ subject { solr_instance.send(:exec, cmd, options) }
24
+ it 'runs the command' do
25
+ result_io = subject
26
+ expect(result_io.read).to include('Usage: solr start')
27
+ end
28
+ it 'accepts boolean flags' do
29
+ result_io = solr_instance.send(:exec, 'start', p: '4098', help: true)
30
+ expect(result_io.read).to include('Usage: solr start')
31
+ end
32
+
33
+ describe 'when something goes wrong' do
34
+ let(:cmd) { 'healthcheck' }
35
+ let(:options) { { z: 'localhost:5098' } }
36
+ it 'raises an error with the output from the shell command' do
37
+ expect { subject }.to raise_error(RuntimeError, /Failed to execute solr healthcheck: collection parameter is required!/)
38
+ end
39
+ end
40
+ end
19
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solr_wrapper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-08 00:00:00.000000000 Z
11
+ date: 2015-11-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -117,6 +117,7 @@ extensions: []
117
117
  extra_rdoc_files: []
118
118
  files:
119
119
  - ".gitignore"
120
+ - ".rspec"
120
121
  - ".rubocop.yml"
121
122
  - ".rubocop_hound.yml"
122
123
  - ".rubocop_todo.yml"
@@ -129,6 +130,8 @@ files:
129
130
  - exe/solr_wrapper
130
131
  - lib/solr_wrapper.rb
131
132
  - lib/solr_wrapper/instance.rb
133
+ - lib/solr_wrapper/rake_task.rb
134
+ - lib/solr_wrapper/tasks/solr_wrapper.rake
132
135
  - lib/solr_wrapper/version.rb
133
136
  - solr_wrapper.gemspec
134
137
  - spec/fixtures/basic_configs/_rest_managed.json
@@ -162,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
165
  version: '0'
163
166
  requirements: []
164
167
  rubyforge_project:
165
- rubygems_version: 2.4.5
168
+ rubygems_version: 2.4.5.1
166
169
  signing_key:
167
170
  specification_version: 4
168
171
  summary: Solr 5 service wrapper