diff --git a/vendor/plugins/acts_as_solr/config/solr_environment.rb b/vendor/plugins/acts_as_solr/config/solr_environment.rb index 3d4aeb7..88619bc 100644 --- a/vendor/plugins/acts_as_solr/config/solr_environment.rb +++ b/vendor/plugins/acts_as_solr/config/solr_environment.rb @@ -5,11 +5,13 @@ SOLR_PATH = "#{File.dirname(File.expand_path(__FILE__))}/../solr" unless defined SOLR_LOGS_PATH = "#{rails_root_dir}/log" unless defined? SOLR_LOGS_PATH SOLR_PIDS_PATH = "#{rails_root_dir}/tmp/pids" unless defined? SOLR_PIDS_PATH +SOLR_PID_FILE="#{SOLR_PIDS_PATH}/solr.#{ENV['RAILS_ENV']}.pid" SOLR_DATA_PATH = "#{rails_root_dir}/solr/#{ENV['RAILS_ENV']}" unless defined? SOLR_DATA_PATH unless defined? SOLR_PORT config = YAML::load_file(rails_root_dir+'/config/solr.yml') + SOLR_HOST = ENV['HOST'] || URI.parse(config[ENV['RAILS_ENV']]['url']).host SOLR_PORT = ENV['PORT'] || URI.parse(config[ENV['RAILS_ENV']]['url']).port end diff --git a/vendor/plugins/acts_as_solr/lib/solr/xml.rb b/vendor/plugins/acts_as_solr/lib/solr/xml.rb index d449225..fb7b210 100644 --- a/vendor/plugins/acts_as_solr/lib/solr/xml.rb +++ b/vendor/plugins/acts_as_solr/lib/solr/xml.rb @@ -36,9 +36,8 @@ begin Solr::XML::Element = XML::Node rescue LoadError => e # If we can't load either rubygems or libxml-ruby - puts "Requiring REXML" # Just use REXML. require 'rexml/document' Solr::XML::Element = REXML::Element -end \ No newline at end of file +end diff --git a/vendor/plugins/acts_as_solr/lib/tasks/solr.rake b/vendor/plugins/acts_as_solr/lib/tasks/solr.rake index fc139d3..26b3191 100644 --- a/vendor/plugins/acts_as_solr/lib/tasks/solr.rake +++ b/vendor/plugins/acts_as_solr/lib/tasks/solr.rake @@ -5,6 +5,21 @@ require 'active_record' namespace :solr do + desc 'Download and install Solr+Jetty 3.1.0.' + task :download do + if (File.exists?(Rails.root + '/vendor/plugins/acts_as_solr/solr/start.jar')) + puts 'Solr already downloaded.' + else + cd '/tmp' + sh 'wget -c http://apache.mirrors.hoobly.com/lucene/solr/3.1.0/apache-solr-3.1.0.tgz' + sh 'tar xzf apache-solr-3.1.0.tgz' + cd 'apache-solr-3.1.0/example' + cp_r ['../LICENSE.txt', '../NOTICE.txt', 'README.txt', 'etc', 'lib', 'start.jar', 'webapps', 'work'], Rails.root + '/vendor/plugins/acts_as_solr/solr', :verbose => true + cd 'solr' + cp_r ['README.txt', 'bin', 'solr.xml'], Rails.root + '/vendor/plugins/acts_as_solr/solr/solr', :verbose => true + end + end + desc 'Starts Solr. Options accepted: RAILS_ENV=your_env, PORT=XX. Defaults to development if none.' task :start do require "#{File.dirname(__FILE__)}/../../config/solr_environment.rb" @@ -18,12 +33,12 @@ namespace :solr do rescue Errno::ECONNREFUSED #not responding Dir.chdir(SOLR_PATH) do pid = fork do - #STDERR.close - exec "java #{SOLR_JVM_OPTIONS} -Dsolr.data.dir=#{SOLR_DATA_PATH} -Djetty.logs=#{SOLR_LOGS_PATH} -Djetty.port=#{SOLR_PORT} -jar start.jar" + STDERR.close + exec "java #{SOLR_JVM_OPTIONS} -Dsolr.data.dir=#{SOLR_DATA_PATH} -Djetty.logs=#{SOLR_LOGS_PATH} -Djetty.host=#{SOLR_HOST} -Djetty.port=#{SOLR_PORT} -jar start.jar" end sleep(5) - File.open("#{SOLR_PIDS_PATH}/#{ENV['RAILS_ENV']}_pid", "w"){ |f| f << pid} - puts "#{ENV['RAILS_ENV']} Solr started successfully on #{SOLR_PORT}, pid: #{pid}." + File.open(SOLR_PID_FILE, "w"){ |f| f << pid} + puts "#{ENV['RAILS_ENV']} Solr started successfully on #{SOLR_HOST}:#{SOLR_PORT}, pid: #{pid}." end end end @@ -32,17 +47,16 @@ namespace :solr do task :stop do require "#{File.dirname(__FILE__)}/../../config/solr_environment.rb" fork do - file_path = "#{SOLR_PIDS_PATH}/#{ENV['RAILS_ENV']}_pid" - if File.exists?(file_path) - File.open(file_path, "r") do |f| + if File.exists?(SOLR_PID_FILE) + File.open(SOLR_PID_FILE, "r") do |f| pid = f.readline Process.kill('TERM', pid.to_i) end - File.unlink(file_path) + File.unlink(SOLR_PID_FILE) Rake::Task["solr:destroy_index"].invoke if ENV['RAILS_ENV'] == 'test' puts "Solr shutdown successfully." else - puts "PID file not found at #{file_path}. Either Solr is not running or no PID file was written." + puts "PID file not found at #{SOLR_PID_FILE}. Either Solr is not running or no PID file was written." end end end -- libgit2 0.21.2