Commit 1bbb7864900690ab210e9167de7d98ee1b2de498
1 parent
7fc1e86f
Exists in
master
and in
28 other branches
Add solr:download task
Task solr:download downloads, unpacks and installs Solr+Jetty 3.1.0 inside acts_as_solr plugin. Also fix PID filename according to the standard. Downloading Solr is necessary cause it's too big to include with noosfero (~13mb) and is not available for Debian Lenny.
Showing
3 changed files
with
26 additions
and
11 deletions
Show diff stats
vendor/plugins/acts_as_solr/config/solr_environment.rb
| ... | ... | @@ -5,11 +5,13 @@ SOLR_PATH = "#{File.dirname(File.expand_path(__FILE__))}/../solr" unless defined |
| 5 | 5 | |
| 6 | 6 | SOLR_LOGS_PATH = "#{rails_root_dir}/log" unless defined? SOLR_LOGS_PATH |
| 7 | 7 | SOLR_PIDS_PATH = "#{rails_root_dir}/tmp/pids" unless defined? SOLR_PIDS_PATH |
| 8 | +SOLR_PID_FILE="#{SOLR_PIDS_PATH}/solr.#{ENV['RAILS_ENV']}.pid" | |
| 8 | 9 | SOLR_DATA_PATH = "#{rails_root_dir}/solr/#{ENV['RAILS_ENV']}" unless defined? SOLR_DATA_PATH |
| 9 | 10 | |
| 10 | 11 | unless defined? SOLR_PORT |
| 11 | 12 | config = YAML::load_file(rails_root_dir+'/config/solr.yml') |
| 12 | 13 | |
| 14 | + SOLR_HOST = ENV['HOST'] || URI.parse(config[ENV['RAILS_ENV']]['url']).host | |
| 13 | 15 | SOLR_PORT = ENV['PORT'] || URI.parse(config[ENV['RAILS_ENV']]['url']).port |
| 14 | 16 | end |
| 15 | 17 | ... | ... |
vendor/plugins/acts_as_solr/lib/solr/xml.rb
| ... | ... | @@ -36,9 +36,8 @@ begin |
| 36 | 36 | Solr::XML::Element = XML::Node |
| 37 | 37 | |
| 38 | 38 | rescue LoadError => e # If we can't load either rubygems or libxml-ruby |
| 39 | - puts "Requiring REXML" | |
| 40 | 39 | # Just use REXML. |
| 41 | 40 | require 'rexml/document' |
| 42 | 41 | Solr::XML::Element = REXML::Element |
| 43 | 42 | |
| 44 | -end | |
| 45 | 43 | \ No newline at end of file |
| 44 | +end | ... | ... |
vendor/plugins/acts_as_solr/lib/tasks/solr.rake
| ... | ... | @@ -5,6 +5,21 @@ require 'active_record' |
| 5 | 5 | |
| 6 | 6 | namespace :solr do |
| 7 | 7 | |
| 8 | + desc 'Download and install Solr+Jetty 3.1.0.' | |
| 9 | + task :download do | |
| 10 | + if (File.exists?(Rails.root + '/vendor/plugins/acts_as_solr/solr/start.jar')) | |
| 11 | + puts 'Solr already downloaded.' | |
| 12 | + else | |
| 13 | + cd '/tmp' | |
| 14 | + sh 'wget -c http://apache.mirrors.hoobly.com/lucene/solr/3.1.0/apache-solr-3.1.0.tgz' | |
| 15 | + sh 'tar xzf apache-solr-3.1.0.tgz' | |
| 16 | + cd 'apache-solr-3.1.0/example' | |
| 17 | + cp_r ['../LICENSE.txt', '../NOTICE.txt', 'README.txt', 'etc', 'lib', 'start.jar', 'webapps', 'work'], Rails.root + '/vendor/plugins/acts_as_solr/solr', :verbose => true | |
| 18 | + cd 'solr' | |
| 19 | + cp_r ['README.txt', 'bin', 'solr.xml'], Rails.root + '/vendor/plugins/acts_as_solr/solr/solr', :verbose => true | |
| 20 | + end | |
| 21 | + end | |
| 22 | + | |
| 8 | 23 | desc 'Starts Solr. Options accepted: RAILS_ENV=your_env, PORT=XX. Defaults to development if none.' |
| 9 | 24 | task :start do |
| 10 | 25 | require "#{File.dirname(__FILE__)}/../../config/solr_environment.rb" |
| ... | ... | @@ -18,12 +33,12 @@ namespace :solr do |
| 18 | 33 | rescue Errno::ECONNREFUSED #not responding |
| 19 | 34 | Dir.chdir(SOLR_PATH) do |
| 20 | 35 | pid = fork do |
| 21 | - #STDERR.close | |
| 22 | - exec "java #{SOLR_JVM_OPTIONS} -Dsolr.data.dir=#{SOLR_DATA_PATH} -Djetty.logs=#{SOLR_LOGS_PATH} -Djetty.port=#{SOLR_PORT} -jar start.jar" | |
| 36 | + STDERR.close | |
| 37 | + 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" | |
| 23 | 38 | end |
| 24 | 39 | sleep(5) |
| 25 | - File.open("#{SOLR_PIDS_PATH}/#{ENV['RAILS_ENV']}_pid", "w"){ |f| f << pid} | |
| 26 | - puts "#{ENV['RAILS_ENV']} Solr started successfully on #{SOLR_PORT}, pid: #{pid}." | |
| 40 | + File.open(SOLR_PID_FILE, "w"){ |f| f << pid} | |
| 41 | + puts "#{ENV['RAILS_ENV']} Solr started successfully on #{SOLR_HOST}:#{SOLR_PORT}, pid: #{pid}." | |
| 27 | 42 | end |
| 28 | 43 | end |
| 29 | 44 | end |
| ... | ... | @@ -32,17 +47,16 @@ namespace :solr do |
| 32 | 47 | task :stop do |
| 33 | 48 | require "#{File.dirname(__FILE__)}/../../config/solr_environment.rb" |
| 34 | 49 | fork do |
| 35 | - file_path = "#{SOLR_PIDS_PATH}/#{ENV['RAILS_ENV']}_pid" | |
| 36 | - if File.exists?(file_path) | |
| 37 | - File.open(file_path, "r") do |f| | |
| 50 | + if File.exists?(SOLR_PID_FILE) | |
| 51 | + File.open(SOLR_PID_FILE, "r") do |f| | |
| 38 | 52 | pid = f.readline |
| 39 | 53 | Process.kill('TERM', pid.to_i) |
| 40 | 54 | end |
| 41 | - File.unlink(file_path) | |
| 55 | + File.unlink(SOLR_PID_FILE) | |
| 42 | 56 | Rake::Task["solr:destroy_index"].invoke if ENV['RAILS_ENV'] == 'test' |
| 43 | 57 | puts "Solr shutdown successfully." |
| 44 | 58 | else |
| 45 | - puts "PID file not found at #{file_path}. Either Solr is not running or no PID file was written." | |
| 59 | + puts "PID file not found at #{SOLR_PID_FILE}. Either Solr is not running or no PID file was written." | |
| 46 | 60 | end |
| 47 | 61 | end |
| 48 | 62 | end | ... | ... |