From 47de5afa5612f6428ea07f2ec822e8943d300eab Mon Sep 17 00:00:00 2001 From: Albert Bertram Date: Tue, 15 Mar 2016 10:27:56 -0400 Subject: [PATCH 1/2] Adding a solr:create rake task It looks like there aren't many good options for parsing arguments in rake. This produces the cleanest command line invocation: rake solr:create --- lib/solr_wrapper/tasks/solr_wrapper.rake | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/solr_wrapper/tasks/solr_wrapper.rake b/lib/solr_wrapper/tasks/solr_wrapper.rake index 2e08ac0..3334f0b 100644 --- a/lib/solr_wrapper/tasks/solr_wrapper.rake +++ b/lib/solr_wrapper/tasks/solr_wrapper.rake @@ -32,6 +32,21 @@ namespace :solr do end end + desc 'Create a collection in solr' + task create: :start do + start = ARGV.find_index('solr:create') + if ARGV.length >= start + 2 + directory = ARGV[start + 1] + name = ARGV[start + 2] + # Rake tries to run these as tasks. + task(directory.to_sym) {} + task(name.to_sym) {} + @solr_instance.create dir: directory, name: name + else + raise "Usage: rake solr:create " + end + end + desc 'restart solr' task restart: :environment do puts "Restarting solr" From 225c9de8f32e1cefbe55d2848917761fd1a074f6 Mon Sep 17 00:00:00 2001 From: Albert Bertram Date: Tue, 15 Mar 2016 22:36:54 -0400 Subject: [PATCH 2/2] Moving solr:create to solr:collection:create Invocation now looks like: rake solr:collection:create Failing to specify a directory or name no longer raises an exception. --- lib/solr_wrapper/tasks/solr_wrapper.rake | 26 +++++++++++++----------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/lib/solr_wrapper/tasks/solr_wrapper.rake b/lib/solr_wrapper/tasks/solr_wrapper.rake index 3334f0b..d3d2e5f 100644 --- a/lib/solr_wrapper/tasks/solr_wrapper.rake +++ b/lib/solr_wrapper/tasks/solr_wrapper.rake @@ -32,18 +32,20 @@ namespace :solr do end end - desc 'Create a collection in solr' - task create: :start do - start = ARGV.find_index('solr:create') - if ARGV.length >= start + 2 - directory = ARGV[start + 1] - name = ARGV[start + 2] - # Rake tries to run these as tasks. - task(directory.to_sym) {} - task(name.to_sym) {} - @solr_instance.create dir: directory, name: name - else - raise "Usage: rake solr:create " + namespace :collection do + desc 'Create a collection in solr' + task create: :start do + start = ARGV.find_index('solr:collection:create') + if ARGV.length >= start + 2 + dir = ARGV[start + 1] + name = ARGV[start + 2] + # Rake tries to run these as tasks. + task(dir.to_sym) {} + task(name.to_sym) {} + @solr_instance.create(dir: dir, name: name) + else + $stderr.puts "Usage: rake solr:collection:create " + end end end