class DockerRailsProxy::Base
Attributes
additional_arguments[R]
additional_arguments_options[RW]
arguments[R]
Public Class Methods
build_path(path = nil) { |: path)| ... }
click to toggle source
# File lib/docker_rails_proxy.rb, line 47 def build_path(path = nil) File.join(APP_PATH, block_given? ? yield : path) end
call(options)
click to toggle source
# File lib/docker_rails_proxy.rb, line 59 def call(options) klass = _run_build_callbacks params: options klass.send :_run_before_initialize_callbacks resource = klass.new(**options) klass.send :_run_after_initialize_callbacks, resource: resource klass.send :_run_validation_callbacks, resource: resource klass.send :_run_before_process_callbacks, resource: resource result = resource.process klass.send :_run_after_process_callbacks, resource: resource result end
command()
click to toggle source
# File lib/docker_rails_proxy.rb, line 51 def command name.sub('DockerRailsProxy::', ''.freeze).parameterize.sub('--', ' '.freeze) end
execute(options)
click to toggle source
# File lib/docker_rails_proxy.rb, line 55 def execute(options) system "#{build_path("bin/#{APP_NAME}")} #{command} #{options}" end
new(arguments:, additional_arguments:)
click to toggle source
# File lib/docker_rails_proxy.rb, line 41 def initialize(arguments:, additional_arguments:) @arguments = arguments @additional_arguments = additional_arguments end
Public Instance Methods
process()
click to toggle source
# File lib/docker_rails_proxy.rb, line 79 def process raise NotImplementedError, 'Subclasses must implement a process method' end
Private Instance Methods
additional_arguments_parser() { |opts| ... }
click to toggle source
# File lib/docker_rails_proxy.rb, line 128 def additional_arguments_parser @additional_arguments_parser ||= OptionParser.new do |opts| opts.banner = "Usage: bin/#{APP_NAME} #{self.class.name.demodulize.parameterize} [<arguments>] -- [<additional_arguments>]".bold opts.on('--debug', 'Debug mode') do |debug| additional_arguments_options[:debug] = ::Logger::DEBUG end yield opts if block_given? opts.on('-h', '--help', 'Display this screen') do puts opts exit end end end
build_path(*args, &block)
click to toggle source
# File lib/docker_rails_proxy.rb, line 85 def build_path(*args, &block) self.class.build_path(*args, &block) end
flush_stdin()
click to toggle source
# File lib/docker_rails_proxy.rb, line 122 def flush_stdin loop do Timeout::timeout(0.1) { $stdin.gets.chomp } rescue break end end
get_option(values, default: nil, array: false)
click to toggle source
# File lib/docker_rails_proxy.rb, line 94 def get_option(values, default: nil, array: false) flush_stdin print ': ' option = $stdin.gets.chomp return default if option.blank? if array options = option.split(',') return unless options.all? { |o| o =~ NUMBER_REGEXP } options.map { |o| values[o.to_i].split(',') }.flatten.compact.uniq.join(',') else values[option.to_i] if option =~ NUMBER_REGEXP end end
print_options(values, message)
click to toggle source
# File lib/docker_rails_proxy.rb, line 89 def print_options(values, message) puts message values.each_with_index { |v, i| puts "#{i}) #{v}" } end
until_get_option(values, message, options = {})
click to toggle source
# File lib/docker_rails_proxy.rb, line 111 def until_get_option(values, message, options = {}) value = nil while value.nil? do print_options(values, message) value = get_option(values, **options) end value end