class MediaWiki::TestWiki::Config

Public Class Methods

enhance(base, &block) click to toggle source
   # File lib/media_wiki/test_wiki/config.rb
35 def enhance(base, &block)
36   base.singleton_class.send(:attr_accessor, :config)
37   base.config = new(&block)
38   base
39 end
new() { |self| ... } click to toggle source
    # File lib/media_wiki/test_wiki/config.rb
322 def initialize
323   yield self if block_given?
324 end

Private Class Methods

attribute(name, options = {}, &block) click to toggle source
   # File lib/media_wiki/test_wiki/config.rb
43 def attribute(name, options = {}, &block)
44   define_setter(name, setter = "#{name}=")
45   define_getter(name, setter, options[:env], &block)
46 end
define_getter(name, setter, env, &block) click to toggle source
   # File lib/media_wiki/test_wiki/config.rb
55 def define_getter(name, setter, env, &block)
56   if env
57     raise ArgumentError, 'no block given' unless block
58 
59     define_method(name) { send(setter,
60       ENV.fetch("#{env}_#{name}".upcase) { instance_eval(&block) }) }
61   elsif block
62     define_method(name) { send(setter, instance_eval(&block)) }
63   else
64     define_method(name) { raise ConfigNotSetError.new(name) }
65   end
66 end
define_setter(name, setter) click to toggle source
   # File lib/media_wiki/test_wiki/config.rb
48 def define_setter(name, setter)
49   define_method(setter) { |value|
50     singleton_class.class_eval { attr_reader name }
51     instance_variable_set("@#{name}", value)
52   }
53 end

Private Instance Methods

git_config(key) click to toggle source
    # File lib/media_wiki/test_wiki/config.rb
328 def git_config(key)
329   %x{git config #{key}}.chomp
330 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
206 attribute :database_name do
207   'mw_test'
208 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
75 attribute :download_base, env: :mediawiki do
76   'https://releases.wikimedia.org/mediawiki'
77 end
download_url() click to toggle source

Full download URL

   # File lib/media_wiki/test_wiki/config.rb
81 attribute :download_url, env: :mediawiki do
82   File.join(download_base, version[/\d+\.\d+/], install_file)
83 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
299 attribute :build_path do
300   unless File.writable?(base = root_path)
301     require 'tmpdir'
302     base = [Dir.tmpdir, "#{registry_repo}-docker"]
303   end
304 
305   File.join(base, 'builds', version)
306 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
285 attribute :root_path do
286   File.expand_path(File.dirname(Rake.application.rakefile))
287 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
292 attribute :template_path do
293   File.join(root_path, 'templates')
294 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
254 attribute :php_fpm_socket do
255   '/var/run/php5-fpm.sock'
256 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
261 attribute :port do
262   80
263 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
247 attribute :volume do
248   '/srv'
249 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
189 attribute :data_directory do
190   'data'
191 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
166 attribute :install_directory, env: :mediawiki do
167   "mediawiki-#{version}"
168 end

Internal

↑ top

Public Instance Methods

build_files() click to toggle source

List of build files

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

List of config files

    # File lib/media_wiki/test_wiki/config.rb
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
197 attribute :data_path do
198   File.join(volume, data_directory)
199 end
database_file() click to toggle source

Name of database file

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

Path to database file inside image (absolute)

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

Name of dump file

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

Path to dump file inside image (absolute)

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

Name of installation file inside image

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

Path to installation directory inside image (absolute)

    # File lib/media_wiki/test_wiki/config.rb
174 attribute :install_path do
175   File.join(volume, install_directory)
176 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
277 attribute :process_group do
278   process_user
279 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
270 attribute :process_user do
271   'www-data'
272 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
127 attribute :maintainer, env: :docker do
128   "#{git_config('user.name')} <#{git_config('user.email')}>"
129 end
registry_repo() click to toggle source

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

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

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

    # File lib/media_wiki/test_wiki/config.rb
113 attribute :registry_user, env: :docker do
114   git_config('github.user')
115 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
97 attribute :broken_versions do
98   %w[1.17.5]
99 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
90 attribute :verified_versions do
91   %w[1.23.4 1.22.11 1.21.11 1.20.8 1.19.19 1.18.6 1.17.5]
92 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
104 attribute :version, env: :mediawiki do
105   ENV.fetch('VERSION') { verified_versions.first }
106 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
157 attribute :endpoint, env: :mediawiki do
158   '/api.php'
159 end
password() click to toggle source

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

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

Site name for wiki (Arbitrary string)

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

User name for wiki (Arbitrary string)

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