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