class SousChef::Resource::Gemfile

Public Class Methods

new(context, name, &block) click to toggle source
Calls superclass method SousChef::Resource::Directory::new
# File lib/sous_chef/resource/gemfile.rb, line 6
def initialize(context, name, &block)
  super
  @gems = []
  @sources = []
end

Public Instance Methods

gem(name, version=nil) click to toggle source
# File lib/sous_chef/resource/gemfile.rb, line 12
def gem(name, version=nil)
  @gems << [name, version]
end
path(path=nil) click to toggle source

override

Calls superclass method SousChef::Resource::Directory#path
# File lib/sous_chef/resource/gemfile.rb, line 21
def path(path=nil)
  if path
    super
  else
    gemfile = super
    gemfile = "#{gemfile}/Gemfile" unless gemfile.split('/').last == "Gemfile"
    gemfile
  end
end
source(url) click to toggle source
# File lib/sous_chef/resource/gemfile.rb, line 16
def source(url)
  @sources << url
end

Protected Instance Methods

content() click to toggle source

override

# File lib/sous_chef/resource/gemfile.rb, line 33
def content
  result = StringIO.new
  if @sources.any?
    @sources.each { |url| result.puts %{source "#{url}"} }
    result.puts
  end

  max_name_size = 0
  @gems.each {|name,| max_name_size = [max_name_size, name.size].max}

  @gems.sort_by {|name,| name.downcase}.each do |name, version|
    if version.nil?
      result.puts %{gem "#{name}"}
    else
      width = max_name_size + 3 # 2 quotes + comma
      result.printf %{gem %-#{width}s "%s"\n}, %{"#{name}",}, version
    end
  end

  result.string.strip
end