class MediaWiki::TestWiki::Config
Public Class Methods
# File lib/media_wiki/test_wiki/config.rb, line 322 def initialize yield self if block_given? end
Public Instance Methods
# 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
# 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
# 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
# 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
# File lib/media_wiki/test_wiki/config.rb, line 328 def git_config(key) %x{git config #{key}}.chomp end
Database
↑ topPublic Instance Methods
Name of database (Arbitrary string)
# File lib/media_wiki/test_wiki/config.rb, line 206 attribute :database_name do 'mw_test' end
Download
↑ topPublic Instance Methods
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
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
↑ topPublic Instance Methods
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
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
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
↑ topPublic Instance Methods
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 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
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
↑ topPublic Instance Methods
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
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
↑ topPublic Instance Methods
List of build files
# File lib/media_wiki/test_wiki/config.rb, line 312 attribute :build_files
List of config files
# File lib/media_wiki/test_wiki/config.rb, line 318 attribute :config_files
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
Name of database file
# File lib/media_wiki/test_wiki/config.rb, line 214 attribute :database_file do "#{database_name}.sqlite" end
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
Name of dump file
# File lib/media_wiki/test_wiki/config.rb, line 230 attribute :dump_file do "#{database_name}.sql" end
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
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
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
↑ topPublic Instance Methods
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
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
↑ topPublic Instance Methods
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
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
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
↑ topPublic Instance Methods
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
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 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
↑ topPublic Instance Methods
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 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
Site name for wiki (Arbitrary string)
# File lib/media_wiki/test_wiki/config.rb, line 136 attribute :sitename, env: :mediawiki do 'MW-Test' end
User name for wiki (Arbitrary string)
# File lib/media_wiki/test_wiki/config.rb, line 143 attribute :username, env: :mediawiki do sitename end