class MetalArchives::Configuration

Contains configuration options

Attributes

app_contact[RW]

Required. Application contact email (used in request header)

app_name[RW]

Required. Application name (used in request header)

app_version[RW]

Required. Application version (used in request header)

cache_options[RW]

Cache strategy options

cache_strategy[RW]

Cache strategy

endpoint[RW]

Override Metal Archives endpoint (defaults to www.metal-archives.com/)

endpoint_password[RW]
endpoint_user[RW]

Endpoint HTTP Basic authentication

logger[RW]

Logger instance

Public Class Methods

new(**attributes) click to toggle source

Default configuration values

# File lib/metal_archives/configuration.rb, line 56
def initialize(**attributes)
  attributes.each { |key, value| send(:"#{key}=", value) }

  @endpoint ||= "https://www.metal-archives.com/"
  @logger ||= Logger.new $stdout

  @cache_strategy ||= "memory"
  @cache_options ||= { size: 100 }
end

Public Instance Methods

validate!() click to toggle source

Validate configuration

Raises
  • MetalArchives::Errors::ConfigurationError when configuration is invalid

# File lib/metal_archives/configuration.rb, line 72
def validate!
  raise Errors::InvalidConfigurationError, "app_name has not been configured" if app_name.blank?
  raise Errors::InvalidConfigurationError, "app_version has not been configured" if app_version.blank?
  raise Errors::InvalidConfigurationError, "app_contact has not been configured" if app_contact.blank?
  raise Errors::InvalidConfigurationError, "cache_strategy has not been configured" if cache_strategy.blank?
  raise Errors::InvalidConfigurationError, "cache_strategy must be one of: #{CACHE_STRATEGIES.join(', ')}" if CACHE_STRATEGIES.exclude?(cache_strategy.to_s)
end