class Runner::Base
Basic runner for nginx config file generation.
Attributes
builder_class[R]
Public Instance Methods
main()
click to toggle source
# File lib/shared_infrastructure/runner/base.rb, line 14 def main options = process_options puts "options: #{options.inspect}" if Runner.debug Nginx.prepare_fake_files(options[:domain_name], options[:certificate_domain]) if Nginx.root? @builder_class = protocol_factory(options) puts "builder_class: #{builder_class.inspect}" if Runner.debug builder_class end
options_for_config(options)
click to toggle source
# File lib/shared_infrastructure/runner/base.rb, line 26 def options_for_config(options) options.select { |k, _v| k == :user } end
process_args(opts = nil)
click to toggle source
# File lib/shared_infrastructure/runner/base.rb, line 30 def process_args(opts = nil) raise MissingArgument.new("domain required", opts) if ARGV.size == 0 { domain_name: ARGV } end
process_options(http_builder_class = Nginx::Builder::SiteHttp, https_builder_class = Nginx::Builder::SiteHttps) { |opts| ... }
click to toggle source
# File lib/shared_infrastructure/runner/base.rb, line 35 def process_options(http_builder_class = Nginx::Builder::SiteHttp, https_builder_class = Nginx::Builder::SiteHttps) options = {} opts = OptionParser.new do |opts| opts.banner = "Usage: [options]" # FIXME: This is only applicable to Rails apps. opts.on("-a LOCATION", "--accel LOCATION", "Location below application root to serve when app responds with 'X-Accel'") do |accel_location| options[:accel_location] = accel_location end opts.on("-c DOMAIN", "--certificate-domain DOMAIN", "Use the certificate for DOMAIN.") do |certificate_domain| options[:certificate_domain] = certificate_domain end opts.on("-d", "--debug", "Print debugging information.") do options[:debug] = true Runner.debug = true end opts.on("-d RAILS_ENV", "--rails-env RAILS_ENV", "Build files for the specified RAILS_ENV") do |rails_env| options[:rails_env] = rails_env end opts.on("-P PROTOCOL", "--protocol PROTOCOL", "HTTP|HTTPS. Default: HTTPS if key files exist, else HTTP.") do |protocol| options[:protocol] = case protocol.upcase when "HTTP" http_builder_class when "HTTPS" https_builder_class else opts.abort opts.help end end opts.on("-r DIRECTORY", "--root DIRECTORY", "DIRECTORY. Set a root for files. This options is for debugging.") do |directory| Nginx.chroot(directory) SharedInfrastructure::Output.fake_root(directory) end opts.on("-u USER", "--user USER", "User to be the owner of certain files. Default: the current user.") do |user| options[:user] = user end opts.on("--dhparam KEYSIZE", "KEYSIZE. Default: 2048 should be used. This option is for testing.") do |keysize| Nginx.dhparam = keysize end options.merge! yield opts if block_given? end opts.parse! options.merge!(process_args(opts)) end
protocol_factory(options, http_builder_class = Nginx::Builder::SiteHttp, https_builder_class = Nginx::Builder::SiteHttps)
click to toggle source
# File lib/shared_infrastructure/runner/base.rb, line 102 def protocol_factory(options, http_builder_class = Nginx::Builder::SiteHttp, https_builder_class = Nginx::Builder::SiteHttps) if options[:protocol] options[:protocol] else certificate_directory = Nginx.certificate_directory( options[:certificate_domain] || options[:domain_name].first # FIXME: ) if File.exist?(File.join(certificate_directory, "privkey.pem")) && File.exist?(File.join(certificate_directory, "fullchain.pem")) && File.exist?(File.join(certificate_directory, "chain.pem")) && File.exist?(File.join(certificate_directory, "cert.pem")) https_builder_class else http_builder_class end end end