class R10K::Source::Base

This class defines a common interface for source implementations.

@since 1.3.0

Attributes

basedir[R]

@!attribute [r] basedir

@return [String] The path this source will place environments in
name[R]

@!attribute [r] name

@return [String] The short name for this environment source
prefix[R]

@!attribute [r] prefix

@return [String, nil] The prefix for the environments basedir.
  Defaults to nil.

Public Class Methods

new(name, basedir, options = {}) click to toggle source

Initialize the given source.

@param name [String] The identifier for this source. @param basedir [String] The base directory where the generated environments will be created. @param options [Hash] An additional set of options for this source. The

semantics of this hash may depend on the source implementation.

@option options [Boolean, String] :prefix If a String this becomes the prefix.

If true, will use the source name as the prefix. All sources should respect this option.
Defaults to false for no environment prefix.
# File lib/r10k/source/base.rb, line 29
def initialize(name, basedir, options = {})
  @name    = name
  @basedir = basedir
  @prefix  = options.delete(:prefix)
  @options = options
end

Public Instance Methods

accept(visitor) click to toggle source
# File lib/r10k/source/base.rb, line 61
def accept(visitor)
  visitor.visit(:source, self) do
    environments.each do |env|
      env.accept(visitor)
    end
  end
end
environments() click to toggle source

Enumerate the environments associated with this SVN source.

@api public @abstract @return [Array<R10K::Environment::Base>] An array of environments created

from this source.
# File lib/r10k/source/base.rb, line 57
def environments
  raise NotImplementedError, "#{self.class} has not implemented method #{__method__}"
end
preload!() click to toggle source

Perform any actions needed for loading environments that may have side effects.

Actions done during preloading may include things like updating caches or performing network queries. If an environment has not been preloaded but {#environments} is invoked, it should return the best known state of environments or return an empty list.

@api public @abstract @return [void]

# File lib/r10k/source/base.rb, line 47
def preload!

end