lib/puppet/file_serving/base.rb in puppet-0.25.5 vs lib/puppet/file_serving/base.rb in puppet-2.6.0
- old
+ new
@@ -5,88 +5,84 @@
require 'puppet/file_serving'
# The base class for Content and Metadata; provides common
# functionality like the behaviour around links.
class Puppet::FileServing::Base
- # This is for external consumers to store the source that was used
- # to retrieve the metadata.
- attr_accessor :source
+ # This is for external consumers to store the source that was used
+ # to retrieve the metadata.
+ attr_accessor :source
- # Does our file exist?
- def exist?
- begin
- stat
- return true
- rescue => detail
- return false
- end
- end
+ # Does our file exist?
+ def exist?
+ stat
+ return true
+ rescue => detail
+ return false
+ end
- # Return the full path to our file. Fails if there's no path set.
- def full_path(dummy_argument=:work_arround_for_ruby_GC_bug)
- (if relative_path.nil? or relative_path == "" or relative_path == "."
- path
- else
- File.join(path, relative_path)
- end).gsub(%r{/+}, "/")
- end
+ # Return the full path to our file. Fails if there's no path set.
+ def full_path(dummy_argument=:work_arround_for_ruby_GC_bug)
+ (if relative_path.nil? or relative_path == "" or relative_path == "."
+ path
+ else
+ File.join(path, relative_path)
+ end).gsub(%r{/+}, "/")
+ end
- def initialize(path, options = {})
- self.path = path
- @links = :manage
+ def initialize(path, options = {})
+ self.path = path
+ @links = :manage
- options.each do |param, value|
- begin
- send param.to_s + "=", value
- rescue NoMethodError
- raise ArgumentError, "Invalid option %s for %s" % [param, self.class]
- end
- end
+ options.each do |param, value|
+ begin
+ send param.to_s + "=", value
+ rescue NoMethodError
+ raise ArgumentError, "Invalid option #{param} for #{self.class}"
+ end
end
+ end
- # Determine how we deal with links.
- attr_reader :links
- def links=(value)
- value = value.to_sym
- value = :manage if value == :ignore
- raise(ArgumentError, ":links can only be set to :manage or :follow") unless [:manage, :follow].include?(value)
- @links = value
- end
+ # Determine how we deal with links.
+ attr_reader :links
+ def links=(value)
+ value = value.to_sym
+ value = :manage if value == :ignore
+ raise(ArgumentError, ":links can only be set to :manage or :follow") unless [:manage, :follow].include?(value)
+ @links = value
+ end
- # Set our base path.
- attr_reader :path
- def path=(path)
- raise ArgumentError.new("Paths must be fully qualified") unless path =~ /^#{::File::SEPARATOR}/
- @path = path
- end
+ # Set our base path.
+ attr_reader :path
+ def path=(path)
+ raise ArgumentError.new("Paths must be fully qualified") unless path =~ /^#{::File::SEPARATOR}/
+ @path = path
+ end
- # Set a relative path; this is used for recursion, and sets
- # the file's path relative to the initial recursion point.
- attr_reader :relative_path
- def relative_path=(path)
- raise ArgumentError.new("Relative paths must not be fully qualified") if path =~ /^#{::File::SEPARATOR}/
- @relative_path = path
- end
+ # Set a relative path; this is used for recursion, and sets
+ # the file's path relative to the initial recursion point.
+ attr_reader :relative_path
+ def relative_path=(path)
+ raise ArgumentError.new("Relative paths must not be fully qualified") if path =~ /^#{::File::SEPARATOR}/
+ @relative_path = path
+ end
- # Stat our file, using the appropriate link-sensitive method.
- def stat
- unless defined?(@stat_method)
- @stat_method = self.links == :manage ? :lstat : :stat
- end
- File.send(@stat_method, full_path())
- end
+ # Stat our file, using the appropriate link-sensitive method.
+ def stat
+ @stat_method ||= self.links == :manage ? :lstat : :stat
+ File.send(@stat_method, full_path)
+ end
- def to_pson_data_hash
- {
- # No 'document_type' since we don't send these bare
- 'data' => {
- 'path' => @path,
- 'relative_path' => @relative_path,
- 'links' => @links
- },
- 'metadata' => {
- 'api_version' => 1
- }
- }
- end
+ def to_pson_data_hash
+ {
+ # No 'document_type' since we don't send these bare
+ 'data' => {
+ 'path' => @path,
+ 'relative_path' => @relative_path,
+ 'links' => @links
+ },
+ 'metadata' => {
+ 'api_version' => 1
+ }
+ }
+ end
end