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
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