class RsrGroup::Base

Constants

DEFAULT_CATALOG_FILENAME
DEFAULT_DIR
KEYDEALER_CATALOG_FILENAME
KEYDEALER_DIR
MAP_FILENAME
QTY_FILENAME

Public Class Methods

connect(options = {}) { |ftp| ... } click to toggle source
# File lib/rsr_group/base.rb, line 11
def self.connect(options = {})
  requires!(options, :username, :password)

  Net::FTP.open(RsrGroup.config.ftp_host, options[:username], options[:password]) do |ftp|
    ftp.debug_mode = RsrGroup.config.debug_mode
    ftp.passive = true
    yield ftp
  end
end

Protected Class Methods

requires!(hash, *params) click to toggle source
# File lib/rsr_group/base.rb, line 23
def self.requires!(hash, *params)
  params.each do |param|
    if param.is_a?(Array)
      raise ArgumentError.new("Missing required parameter: #{param.first}") unless hash.has_key?(param.first)

      valid_options = param[1..-1]
      raise ArgumentError.new("Parameter: #{param.first} must be one of: #{valid_options.join(', ')}") unless valid_options.include?(hash[param.first])
    else
      raise ArgumentError.new("Missing required parameter: #{param}") unless hash.has_key?(param)
    end
  end
end

Protected Instance Methods

connect(options) { |ftp| ... } click to toggle source

Instance methods become class methods through inheritance

# File lib/rsr_group/base.rb, line 42
def connect(options)
  self.class.connect(options) do |ftp|
    yield ftp
  end
end
requires!(*args) click to toggle source

Wrapper to `self.requires!` that can be used as an instance method.

# File lib/rsr_group/base.rb, line 37
def requires!(*args)
  self.class.requires!(*args)
end