class Rum::Docker::Image

Docker image object.

Public Class Methods

new(name:, registry:nil, username:nil, tag:nil, &block) click to toggle source

Initialize image by reference component. Evaluates &block if given.

# File lib/rumrunner/docker.rb, line 249
def initialize(name:, registry:nil, username:nil, tag:nil, &block)
  @registry = registry
  @username = username
  @name     = name
  @tag      = tag
  instance_eval(&block) if block_given?
end
parse(string_or_symbol) click to toggle source

Parse a string as a Docker image reference

Example:

Image.parse("image")
Image.parse("image:tag")
Image.parse("username/image")
Image.parse("username/image:tag")
Image.parse("registry:5000/username/image")
Image.parse("registry:5000/username/image:tag")
# File lib/rumrunner/docker.rb, line 295
def parse(string_or_symbol)
  string      = string_or_symbol.to_s
  slash_count = string.count("/")

  # image[:tag]
  if slash_count.zero?
    name, tag = string.split(/:/)
    new name: name, tag: tag

  # username/image[:tag]
  elsif slash_count == 1
    username, name_tag = string.split(/\//)
    name, tag          = name_tag.split(/:/)
    new name: name, username: username, tag: tag

  # registry/username/image[:tag]
  else
    registry, username, name_tag = string.split(/\//)
    name, tag                    = name_tag.split(/:/)
    new name: name, registry: registry, username: username, tag: tag
  end
end

Public Instance Methods

each() { |x| ... } click to toggle source

Yield each non-nil component of the image reference in order.

# File lib/rumrunner/docker.rb, line 259
def each
  [@registry, @username, @name, @tag || :latest].compact.each{|x| yield x.to_s }
end
family() click to toggle source

Get the image reference without the @tag component.

# File lib/rumrunner/docker.rb, line 265
def family
  File.join(*[@registry, @username, @name].compact.map(&:to_s))
end
inspect() click to toggle source

Show handle

# File lib/rumrunner/docker.rb, line 271
def inspect
  handle = @tag.nil? || @tag.to_sym == :latest ? family : to_s
  "#<#{self.class.name}[#{handle}]>"
end
registry() click to toggle source

Access components of the image reference by method.

# File lib/rumrunner/docker.rb, line 244
attr_method_accessor :registry, :username, :name, :tag
to_s() click to toggle source

Convert the image reference to string.

# File lib/rumrunner/docker.rb, line 278
def to_s
  "#{family}:#{@tag || :latest}"
end