class FcrepoWrapper::Configuration
Attributes
options[R]
Public Class Methods
new(options)
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 8 def initialize(options) @config = options[:config] @verbose = options[:verbose] @options = load_configs(Array(options[:config])).merge(options) end
Public Instance Methods
binary_path()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 50 def binary_path File.join(instance_dir, "fcrepo-webapp-#{version}-jetty-console.jar") end
default_download_path()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 22 def default_download_path File.join(download_dir, File.basename(download_url)) end
default_java_options()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 79 def default_java_options ['-Dfcrepo.log.http.api=WARN', # To avoid "WARN: The namespace of predicate: # info:fedora/fedora-system:def/relations-external#isPartOf # was possibly misinterpreted as: # info:fedora/fedora-system:def/relations-external#." '-Dfcrepo.log.kernel=ERROR', ("-Dfcrepo.home=#{fcrepo_home_dir}" if fcrepo_home_dir), ("-Dfcrepo.spring.jms.configuration=#{spring_noop_file}" unless jms_enabled?), '-Xmx512m'].compact end
download_path()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 26 def download_path @download_path ||= options.fetch(:download_path, default_download_path) end
download_url()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 18 def download_url @download_url ||= options.fetch(:url, default_download_url) end
env()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 62 def env options.fetch(:env, {}) end
fcrepo_home_dir()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 91 def fcrepo_home_dir if options[:fcrepo_home_dir] options[:fcrepo_home_dir] elsif defined? Rails File.join(Rails.root, 'tmp', 'fcrepo4-data') else Dir.mktmpdir end end
fcrepo_options()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 58 def fcrepo_options options.fetch(:fcrepo_options, headless: nil) end
ignore_md5sum()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 30 def ignore_md5sum options.fetch(:ignore_md5sum, false) end
instance_dir()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 14 def instance_dir @instance_dir ||= options.fetch(:instance_dir, File.join(Dir.tmpdir, File.basename(download_url, ".jar"))) end
java_options()
click to toggle source
@return a list of arguments to pass to the JVM
# File lib/fcrepo_wrapper/configuration.rb, line 75 def java_options options.fetch(:java_options, default_java_options) + ['-jar', binary_path] end
managed?()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 70 def managed? File.exists?(instance_dir) end
md5sum()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 112 def md5sum options.fetch(:md5sum, nil) end
md5sum_path()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 34 def md5sum_path File.join(download_dir, File.basename(md5url)) end
md5url()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 54 def md5url "https://github.com/fcrepo4/fcrepo4/releases/download/fcrepo-#{version}/fcrepo-webapp-#{version}-jetty-console.jar.md5" end
port()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 101 def port # Check if the port option has been explicitly set to nil. # this means to start fcrepo_wrapper on a random open port return nil if options.key?(:port) && !options[:port] options[:port] || FcrepoWrapper.default_fcrepo_port end
tmp_save_dir()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 38 def tmp_save_dir @tmp_save_dir ||= Dir.mktmpdir end
validate()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 108 def validate options.fetch(:validate, true) end
verbose?()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 66 def verbose? @verbose || (options && !!options.fetch(:verbose, false)) end
version()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 42 def version @version ||= options.fetch(:version, FcrepoWrapper.default_fcrepo_version) end
version_file()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 46 def version_file options.fetch(:version_file, File.join(instance_dir, "VERSION")) end
Private Instance Methods
convert_keys(hash)
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 140 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/fcrepo_wrapper/configuration.rb, line 144 def default_configuration_paths ['~/.fcrepo_wrapper.yml', '~/.fcrepo_wrapper', '.fcrepo_wrapper.yml', '.fcrepo_wrapper'] end
default_download_dir()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 148 def default_download_dir if defined?(Rails) && Rails.root File.join(Rails.root, 'tmp') else Dir.tmpdir end end
default_download_url()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 162 def default_download_url @default_url ||= "https://github.com/fcrepo4/fcrepo4/releases/download/fcrepo-#{version}/fcrepo-webapp-#{version}-jetty-console.jar" end
download_dir()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 156 def download_dir @download_dir ||= options.fetch(:download_dir, default_download_dir) FileUtils.mkdir_p @download_dir @download_dir end
jms_enabled?()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 180 def jms_enabled? options.fetch(:enable_jms, true) end
load_configs(config_files)
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 118 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
random_open_port()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 166 def random_open_port socket = Socket.new(:INET, :STREAM, 0) begin socket.bind(Addrinfo.tcp('127.0.0.1', 0)) socket.local_address.ip_port ensure socket.close end end
read_config(config_file)
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 130 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
spring_noop_file()
click to toggle source
# File lib/fcrepo_wrapper/configuration.rb, line 176 def spring_noop_file 'file://' + File.expand_path('../../../data/spring-noop.xml', __FILE__) end