class MediaWiki::TestWiki::Config

Public Class Methods

new() { |self| ... } click to toggle source
# File lib/media_wiki/test_wiki/config.rb, line 322
def initialize
  yield self if block_given?
end

Public Instance Methods

enhance(base, &block) click to toggle source
# File lib/media_wiki/test_wiki/config.rb, line 35
def enhance(base, &block)
  base.singleton_class.send(:attr_accessor, :config)
  base.config = new(&block)
  base
end

Private Instance Methods

attribute(name, options = {}, &block) click to toggle source
# File lib/media_wiki/test_wiki/config.rb, line 43
def attribute(name, options = {}, &block)
  define_setter(name, setter = "#{name}=")
  define_getter(name, setter, options[:env], &block)
end
define_getter(name, setter, env, &block) click to toggle source
# File lib/media_wiki/test_wiki/config.rb, line 55
def define_getter(name, setter, env, &block)
  if env
    raise ArgumentError, 'no block given' unless block

    define_method(name) { send(setter,
      ENV.fetch("#{env}_#{name}".upcase) { instance_eval(&block) }) }
  elsif block
    define_method(name) { send(setter, instance_eval(&block)) }
  else
    define_method(name) { raise ConfigNotSetError.new(name) }
  end
end
define_setter(name, setter) click to toggle source
# File lib/media_wiki/test_wiki/config.rb, line 48
def define_setter(name, setter)
  define_method(setter) { |value|
    singleton_class.class_eval { attr_reader name }
    instance_variable_set("@#{name}", value)
  }
end
git_config(key) click to toggle source
# File lib/media_wiki/test_wiki/config.rb, line 328
def git_config(key)
  %x{git config #{key}}.chomp
end

Database

↑ top

Public Instance Methods

database_name() click to toggle source

Name of database (Arbitrary string)

# File lib/media_wiki/test_wiki/config.rb, line 206
attribute :database_name do
  'mw_test'
end

Download

↑ top

Public Instance Methods

download_base() click to toggle source

Base location for tarball downloads (Must exist and be accessible for download)

# File lib/media_wiki/test_wiki/config.rb, line 75
attribute :download_base, env: :mediawiki do
  'https://releases.wikimedia.org/mediawiki'
end
download_url() click to toggle source

Full download URL

# File lib/media_wiki/test_wiki/config.rb, line 81
attribute :download_url, env: :mediawiki do
  File.join(download_base, version[/\d+\.\d+/], install_file)
end

Host paths

↑ top

Public Instance Methods

build_path() click to toggle source

Path to build directory on host (Should be empty; used as build context)

# File lib/media_wiki/test_wiki/config.rb, line 299
attribute :build_path do
  unless File.writable?(base = root_path)
    require 'tmpdir'
    base = [Dir.tmpdir, "#{registry_repo}-docker"]
  end

  File.join(base, 'builds', version)
end
root_path() click to toggle source

Path to root directory containing template_path and build_path

# File lib/media_wiki/test_wiki/config.rb, line 285
attribute :root_path do
  File.expand_path(File.dirname(Rake.application.rakefile))
end
template_path() click to toggle source

Path to template directory on host (Must contain build file templates *.erb)

# File lib/media_wiki/test_wiki/config.rb, line 292
attribute :template_path do
  File.join(root_path, 'templates')
end

Image

↑ top

Public Instance Methods

php_fpm_socket() click to toggle source

Path to PHP-FPM listen socket inside image (Must be an absolute path)

# File lib/media_wiki/test_wiki/config.rb, line 254
attribute :php_fpm_socket do
  '/var/run/php5-fpm.sock'
end
port() click to toggle source

Port to serve content from inside image (will be exposed) (Arbitrary integer)

# File lib/media_wiki/test_wiki/config.rb, line 261
attribute :port do
  80
end
volume() click to toggle source

Name of base directory inside image (will be exported) (Must be an absolute path)

# File lib/media_wiki/test_wiki/config.rb, line 247
attribute :volume do
  '/srv'
end

Image paths

↑ top

Public Instance Methods

data_directory() click to toggle source

Name of data directory inside image (relative to volume) (Arbitrary string)

# File lib/media_wiki/test_wiki/config.rb, line 189
attribute :data_directory do
  'data'
end
install_directory() click to toggle source

Name of installation directory inside image (relative to volume) (Must match directory extracted from tarball)

# File lib/media_wiki/test_wiki/config.rb, line 166
attribute :install_directory, env: :mediawiki do
  "mediawiki-#{version}"
end

Internal

↑ top

Public Instance Methods

build_files() click to toggle source

List of build files

# File lib/media_wiki/test_wiki/config.rb, line 312
attribute :build_files
config_files() click to toggle source

List of config files

# File lib/media_wiki/test_wiki/config.rb, line 318
attribute :config_files
data_path() click to toggle source

Path to data directory inside image (absolute)

# File lib/media_wiki/test_wiki/config.rb, line 197
attribute :data_path do
  File.join(volume, data_directory)
end
database_file() click to toggle source

Name of database file

# File lib/media_wiki/test_wiki/config.rb, line 214
attribute :database_file do
  "#{database_name}.sqlite"
end
database_path() click to toggle source

Path to database file inside image (absolute)

# File lib/media_wiki/test_wiki/config.rb, line 222
attribute :database_path do
  File.join(data_path, database_file)
end
dump_file() click to toggle source

Name of dump file

# File lib/media_wiki/test_wiki/config.rb, line 230
attribute :dump_file do
  "#{database_name}.sql"
end
dump_path() click to toggle source

Path to dump file inside image (absolute)

# File lib/media_wiki/test_wiki/config.rb, line 238
attribute :dump_path do
  File.join(data_path, dump_file)
end
install_file() click to toggle source

Name of installation file inside image

# File lib/media_wiki/test_wiki/config.rb, line 182
attribute :install_file do
  "#{install_directory}.tar.gz"
end
install_path() click to toggle source

Path to installation directory inside image (absolute)

# File lib/media_wiki/test_wiki/config.rb, line 174
attribute :install_path do
  File.join(volume, install_directory)
end

Process

↑ top

Public Instance Methods

process_group() click to toggle source

Group to run process as inside image (Must match actual system group)

# File lib/media_wiki/test_wiki/config.rb, line 277
attribute :process_group do
  process_user
end
process_user() click to toggle source

User to run process as inside image (Must match actual system user)

# File lib/media_wiki/test_wiki/config.rb, line 270
attribute :process_user do
  'www-data'
end

Registry

↑ top

Public Instance Methods

maintainer() click to toggle source

Maintainer of image (Arbitrary string; used for author field)

# File lib/media_wiki/test_wiki/config.rb, line 127
attribute :maintainer, env: :docker do
  "#{git_config('user.name')} <#{git_config('user.email')}>"
end
registry_repo() click to toggle source

Repository name for image (Arbitrary string; used for registry)

# File lib/media_wiki/test_wiki/config.rb, line 120
attribute :registry_repo, env: :docker do
  'mediawiki-testwiki'
end
registry_user() click to toggle source

User name for image (Arbitrary string; used for registry)

# File lib/media_wiki/test_wiki/config.rb, line 113
attribute :registry_user, env: :docker do
  git_config('github.user')
end

Versions

↑ top

Public Instance Methods

broken_versions() click to toggle source

Version numbers for which manual configuration is broken (Must match version numbers from download_base)

# File lib/media_wiki/test_wiki/config.rb, line 97
attribute :broken_versions do
  %w[1.17.5]
end
verified_versions() click to toggle source

Version numbers for which configuration instructions have been verified (Must match version numbers from download_base)

# File lib/media_wiki/test_wiki/config.rb, line 90
attribute :verified_versions do
  %w[1.23.4 1.22.11 1.21.11 1.20.8 1.19.19 1.18.6 1.17.5]
end
version() click to toggle source

Version number to install (Must match a version number from download_base)

# File lib/media_wiki/test_wiki/config.rb, line 104
attribute :version, env: :mediawiki do
  ENV.fetch('VERSION') { verified_versions.first }
end

Wiki

↑ top

Public Instance Methods

endpoint() click to toggle source

Endpoint to talk to (Must match MediaWiki endpoint)

# File lib/media_wiki/test_wiki/config.rb, line 157
attribute :endpoint, env: :mediawiki do
  '/api.php'
end
password() click to toggle source

Password for wiki (Arbitrary string; must not match username)

# File lib/media_wiki/test_wiki/config.rb, line 150
attribute :password, env: :mediawiki do
  'mw_test'
end
sitename() click to toggle source

Site name for wiki (Arbitrary string)

# File lib/media_wiki/test_wiki/config.rb, line 136
attribute :sitename, env: :mediawiki do
  'MW-Test'
end
username() click to toggle source

User name for wiki (Arbitrary string)

# File lib/media_wiki/test_wiki/config.rb, line 143
attribute :username, env: :mediawiki do
  sitename
end