class R10K::Source::Base
This class defines a common interface for source implementations.
@since 1.3.0
Attributes
@!attribute [r] basedir
@return [String] The path this source will place environments in
@!attribute [r] name
@return [String] The short name for this environment source
@!attribute [r] prefix
@return [String, nil] The prefix for the environments basedir. Defaults to nil.
Public Class Methods
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
# 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
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
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