class MediaWiki::TestWiki::Config
Public Class Methods
# 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
# File lib/media_wiki/test_wiki/config.rb 322 def initialize 323 yield self if block_given? 324 end
Private Class Methods
# 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
# 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
# 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
# File lib/media_wiki/test_wiki/config.rb 328 def git_config(key) 329 %x{git config #{key}}.chomp 330 end
Database
↑ topPublic Instance Methods
Name of database (Arbitrary string)
# File lib/media_wiki/test_wiki/config.rb 206 attribute :database_name do 207 'mw_test' 208 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 75 attribute :download_base, env: :mediawiki do 76 'https://releases.wikimedia.org/mediawiki' 77 end
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
↑ topPublic Instance Methods
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
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
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
↑ topPublic Instance Methods
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 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
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
↑ topPublic Instance Methods
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
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
↑ topPublic Instance Methods
List of build files
# File lib/media_wiki/test_wiki/config.rb 312 attribute :build_files
List of config files
# File lib/media_wiki/test_wiki/config.rb 318 attribute :config_files
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
Name of database file
# File lib/media_wiki/test_wiki/config.rb 214 attribute :database_file do 215 "#{database_name}.sqlite" 216 end
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
Name of dump file
# File lib/media_wiki/test_wiki/config.rb 230 attribute :dump_file do 231 "#{database_name}.sql" 232 end
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
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
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
↑ topPublic Instance Methods
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
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
↑ topPublic Instance Methods
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
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
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
↑ 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 97 attribute :broken_versions do 98 %w[1.17.5] 99 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 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
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
↑ topPublic Instance Methods
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 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
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
User name for wiki (Arbitrary string)
# File lib/media_wiki/test_wiki/config.rb 143 attribute :username, env: :mediawiki do 144 sitename 145 end