class SolrWrapper::Configuration
Attributes
options[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 7 def initialize(options = {}) @config = options[:config] @verbose = options[:verbose] @options = load_configs(Array(options[:config])).merge(options) end
Private Class Methods
slice(source, *keys)
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 154 def self.slice(source, *keys) keys.each_with_object({}) { |k, hash| hash[k] = source[k] if source.has_key?(k) } end
Public Instance Methods
algorithm()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 34 def algorithm options[:algorithm] end
archive_download_url()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 122 def archive_download_url "https://archive.apache.org/dist/lucene/solr/#{version}/solr-#{version}.zip" end
checksum()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 30 def checksum options[:checksum] end
closest_mirror_url()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 96 def closest_mirror_url "https://www.apache.org/dyn/closer.lua/lucene/solr/#{version}/solr-#{version}.zip?asjson=true" end
cloud()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 126 def cloud options[:cloud] end
collection_options()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 138 def collection_options hash = options.fetch(:collection, {}) Configuration.slice(convert_keys(hash), :name, :dir, :persist) end
configsets()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 143 def configsets configsets = options[:configsets] || [] configsets.map { |x| convert_keys(x) } end
default_download_dir()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 65 def default_download_dir if defined?(Rails) && Rails.respond_to?(:root) && Rails.root File.join(Rails.root, 'tmp') else Dir.tmpdir end end
download_dir()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 61 def download_dir options[:download_dir] || default_download_dir end
env()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 77 def env options.fetch(:env, {}) end
extra_lib_dir()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 18 def extra_lib_dir options[:extra_lib_dir] end
ignore_checksum()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 26 def ignore_checksum options[:ignore_checksum] end
instance_dir()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 81 def instance_dir options[:instance_dir] end
mirror_url()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 100 def mirror_url @mirror_url ||= if options[:mirror_url] options[:mirror_url] + "lucene/solr/#{version}/solr-#{version}.zip" else begin json = HTTP.follow.get(closest_mirror_url).body doc = JSON.parse(json) url = doc['preferred'] + doc['path_info'] response = HTTP.head(url) if response.status.success? url else archive_download_url end rescue Errno::ECONNRESET, SocketError, HTTP::Error archive_download_url end end end
poll_interval()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 148 def poll_interval options.fetch(:poll_interval, 1) end
port()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 42 def port # Check if the port option has been explicitly set to nil. # this means to start solr wrapper on a random open port return nil if options.key?(:port) && !options[:port] options.fetch(:port) { SolrWrapper.default_instance_options[:port] }.to_s end
solr_options()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 73 def solr_options options.fetch(:solr_options, {}) end
solr_xml()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 14 def solr_xml options[:solr_xml] end
solr_zip_path()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 57 def solr_zip_path options[:solr_zip_path] end
url()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 38 def url options[:url] end
validate()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 22 def validate options[:validate] end
verbose?()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 130 def verbose? @verbose || (options && !!options.fetch(:verbose, false)) end
version()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 85 def version @version ||= begin config_version = options.fetch(:version, SolrWrapper.default_instance_options[:version]) if config_version == 'latest' fetch_latest_version else config_version end end end
version_file()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 134 def version_file options[:version_file] end
zookeeper_host()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 49 def zookeeper_host options[:zookeeper_host] end
zookeeper_port()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 53 def zookeeper_port options[:zookeeper_port] end
Private Instance Methods
convert_keys(hash)
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 180 def convert_keys(hash) hash.each_with_object({}) { |(k, v), h| h[k.to_sym] = v } end
default_configuration_paths()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 184 def default_configuration_paths ['~/.solr_wrapper.yml', '~/.solr_wrapper', '.solr_wrapper.yml', '.solr_wrapper'] end
fetch_latest_version()
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 188 def fetch_latest_version response = HTTP.follow.get(options.fetch(:latest_version_url, 'https://solr.apache.org/downloads.html')) response.body.to_s[/Solr \d+\.\d+\.\d+/][/\d+\.\d+\.\d+/] end
load_configs(config_files)
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 158 def load_configs(config_files) config = {} (default_configuration_paths + config_files.compact).each do |p| path = File.expand_path(p) next unless File.exist? path config.merge!(read_config(path)) end config end
read_config(config_file)
click to toggle source
# File lib/solr_wrapper/configuration.rb, line 170 def read_config(config_file) $stdout.puts "Loading configuration from #{config_file}" if verbose? config = YAML.load(ERB.new(IO.read(config_file)).result(binding)) unless config $stderr.puts "Unable to parse config #{config_file}" if verbose? return {} end convert_keys(config) end