<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/sprinkle/actors/actors.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -18,6 +18,7 @@ examples/rails/packages/server.rb
 examples/rails/rails.rb
 examples/sprinkle/sprinkle.rb
 lib/sprinkle.rb
+lib/sprinkle/actors/actors.rb
 lib/sprinkle/actors/capistrano.rb
 lib/sprinkle/actors/vlad.rb
 lib/sprinkle/configurable.rb</diff>
      <filename>Manifest.txt</filename>
    </modified>
    <modified>
      <diff>@@ -18,11 +18,15 @@ module Sprinkle
   OPTIONS = { :testing =&gt; false, :verbose =&gt; false, :force =&gt; false }
 end
 
+# Object is extended to give the package, policy, and deployment methods. To
+# read about each method, see the corresponding module which is included.
+#--
 # Define a logging target and understand packages, policies and deployment DSL
+#++
 class Object
   include Sprinkle::Package, Sprinkle::Policy, Sprinkle::Deployment
 
-  def logger
+  def logger # :nodoc:
     @@__log__ ||= ActiveSupport::BufferedLogger.new($stdout, ActiveSupport::BufferedLogger::Severity::INFO)
   end
 end</diff>
      <filename>lib/sprinkle.rb</filename>
    </modified>
    <modified>
      <diff>@@ -2,10 +2,26 @@ require 'capistrano/cli'
 
 module Sprinkle
   module Actors
+    # = Capistrano Delivery Method
+    #
+    # Capistrano is one of the delivery method options available out of the
+    # box with Sprinkle. If you have the capistrano gem install, you may use
+    # this delivery. The only configuration option available, and which is 
+    # mandatory to include is +recipes+. An example:
+    #
+    #   deployment do
+    #     delivery :capistrano do
+    #       recipes 'deploy'
+    #     end
+    #   end
+    #
+    # Recipes is given a list of files which capistrano will include and load.
+    # These recipes are mainly to set variables such as :user, :password, and to 
+    # set the app domain which will be sprinkled. 
     class Capistrano
-      attr_accessor :config, :loaded_recipes
+      attr_accessor :config, :loaded_recipes #:nodoc:
 
-      def initialize(&amp;block)
+      def initialize(&amp;block) #:nodoc:
         @config = ::Capistrano::Configuration.new
         @config.logger.level = Sprinkle::OPTIONS[:verbose] ? ::Capistrano::Logger::INFO : ::Capistrano::Logger::IMPORTANT
         @config.set(:password) { ::Capistrano::CLI.password_prompt }
@@ -16,13 +32,25 @@ module Sprinkle
         end
       end
 
+      # Defines a recipe file which will be included by capistrano. Use these
+      # recipe files to set capistrano specific configurations. Default recipe
+      # included is &quot;deploy.&quot; But if any other recipe is specified, it will
+      # include that instead. Multiple recipes may be specified through multiple
+      # recipes calls, an example:
+      #
+      #   deployment do
+      #     delivery :capistrano do
+      #       recipes 'deploy'
+      #       recipes 'magic_beans'
+      #     end
+      #   end
       def recipes(script)
         @loaded_recipes ||= []
         @config.load script
         @loaded_recipes &lt;&lt; script
       end
 
-      def process(name, commands, roles, suppress_and_return_failures = false)
+      def process(name, commands, roles, suppress_and_return_failures = false) #:nodoc:
         define_task(name, roles) do
           via = fetch(:run_method, :sudo)
           commands.each do |command|</diff>
      <filename>lib/sprinkle/actors/capistrano.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,46 @@
 module Sprinkle
   module Actors
+    # = Vlad Delivery Method
+    #
+    # Vlad is one of the delivery method options available out of the
+    # box with Sprinkle. If you have the vlad the deployer gem install, you 
+    # may use this delivery. The only configuration option available, and 
+    # which is mandatory to include is +script+. An example:
+    #
+    #   deployment do
+    #     delivery :vlad do
+    #       script 'deploy'
+    #     end
+    #   end
+    #
+    # script is given a list of files which capistrano will include and load.
+    # These recipes are mainly to set variables such as :user, :password, and to 
+    # set the app domain which will be sprinkled.
     class Vlad
       require 'vlad'
-      attr_accessor :loaded_recipes
+      attr_accessor :loaded_recipes #:nodoc:
 
-      def initialize(&amp;block)
+      def initialize(&amp;block) #:nodoc:
         self.instance_eval &amp;block if block
       end
 
+      # Defines a script file which will be included by vlad. Use these
+      # script files to set vlad specific configurations. Multiple scripts
+      # may be specified through multiple script calls, an example:
+      #
+      #   deployment do
+      #     delivery :vlad do
+      #       script 'deploy'
+      #       script 'magic_beans'
+      #     end
+      #   end
       def script(name)
         @loaded_recipes ||= []
         self.load name
         @loaded_recipes &lt;&lt; script
       end
 
-      def process(name, commands, roles, suppress_and_return_failures = false)
+      def process(name, commands, roles, suppress_and_return_failures = false) #:nodoc:
         commands = commands.join ' &amp;&amp; ' if commands.is_a? Array
         t = remote_task(task_sym(name), :roles =&gt; roles) { run commands }
         </diff>
      <filename>lib/sprinkle/actors/vlad.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,8 @@
 module Sprinkle
-  module Configurable
+  #--
+  # TODO: Possible documentation?
+  #++
+  module Configurable #:nodoc:
     attr_accessor :delivery
     
     def defaults(deployment)</diff>
      <filename>lib/sprinkle/configurable.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,29 +1,69 @@
 module Sprinkle
+  # Deployment blocks specify deployment specific information about a 
+  # sprinkle script. An example:
+  #
+  #   deployment do
+  #     # mechanism for deployment
+  #     delivery :capistrano do
+  #       recipes 'deploy'
+  #     end
+  # 
+  #     # source based package installer defaults
+  #     source do
+  #       prefix   '/usr/local'
+  #       archives '/usr/local/sources'
+  #       builds   '/usr/local/build'
+  #     end
+  #   end
+  #
+  # What the above example does is tell sprinkle that we will be using
+  # *capistrano* (Sprinkle::Actors::Capistrano) for deployment and
+  # everything within the block is capistrano specific configuration.
+  # For more information on what options are available, check the corresponding
+  # Sprinkle::Actors doc page.
+  #
+  # In addition to what delivery mechanism we're using, we specify some
+  # configuration options for the &quot;source&quot; command. The only things
+  # configurable, at this time, in the deployment block other than
+  # the delivery method are installers. If installers are configurable,
+  # they will say so on their corresponding documentation page. See
+  # Sprinkle::Installers
+  #
+  # &lt;b&gt;Only one deployment block is on any given sprinkle script&lt;/b&gt;
   module Deployment
+    # The method outlined above which specifies deployment specific information
+    # for a sprinkle script. For more information, read the header of this module.
     def deployment(&amp;block)
       @deployment = Deployment.new(&amp;block)
     end
 
     class Deployment
-      attr_accessor :style, :defaults
+      attr_accessor :style, :defaults #:nodoc:
 
-      def initialize(&amp;block)
+      def initialize(&amp;block) #:nodoc:
         @defaults = {}
         self.instance_eval(&amp;block)
         raise 'No delivery mechanism defined' unless @style
       end
 
-      def delivery(type, &amp;block)
+      # Specifies which Sprinkle::Actors to use for delivery. Although all
+      # actors jobs are the same: to run remote commands on a server, you
+      # may have a personal preference. The block you pass is used to configure
+      # the actor. For more information on what configuration options are
+      # available, view the corresponding Sprinkle::Actors page.
+      def delivery(type, &amp;block) #:doc:
         @style = Actors.const_get(type.to_s.titleize).new &amp;block
       end
 
-      def method_missing(sym, *args, &amp;block)
+      def method_missing(sym, *args, &amp;block) #:nodoc:
         @defaults[sym] = block
       end
 
-      def respond_to?(sym); !!@defaults[sym]; end
+      def respond_to?(sym) #:nodoc:
+        !!@defaults[sym]
+      end
 
-      def process
+      def process #:nodoc:
         POLICIES.each do |policy|
           policy.process(self)
         end</diff>
      <filename>lib/sprinkle/deployment.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-module ArbitraryOptions
+module ArbitraryOptions #:nodoc:
   def self.included(base)
     base.alias_method_chain :method_missing, :arbitrary_options
   end</diff>
      <filename>lib/sprinkle/extensions/arbitrary_options.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,5 @@
-class Array
-  
+class Array #:nodoc:
   def to_task_name
     collect(&amp;:to_task_name).join('_')
   end
-  
 end
\ No newline at end of file</diff>
      <filename>lib/sprinkle/extensions/array.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class BlankSlate
+class BlankSlate #:nodoc:
   instance_methods.each do |m| 
     undef_method(m) unless %w( __send__ __id__ send class inspect instance_eval instance_variables ).include?(m)
   end</diff>
      <filename>lib/sprinkle/extensions/blank_slate.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class Module
+class Module #:nodoc:
   def dsl_accessor(*symbols)
     symbols.each do |sym|
       class_eval %{</diff>
      <filename>lib/sprinkle/extensions/dsl_accessor.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class String
+class String #:nodoc:
   
   # REVISIT: what chars shall we allow in task names?
   def to_task_name</diff>
      <filename>lib/sprinkle/extensions/string.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class Symbol
+class Symbol #:nodoc:
   
   def to_task_name
     to_s.to_task_name</diff>
      <filename>lib/sprinkle/extensions/symbol.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,35 @@
 module Sprinkle
   module Installers
+    # = Apt Package Installer
+    #
+    # The Apt package installer uses the +apt-get+ command to install
+    # packages. The apt installer has only one option which can be
+    # modified which is the +dependencies_only+ option. When this is
+    # set to true, the installer uses +build-dep+ instead of +install+
+    # to only build the dependencies.
+    # 
+    # == Example Usage
+    #
+    # First, a simple installation of the magic_beans package:
+    #
+    #   package :magic_beans do
+    #     description &quot;Beans beans they're good for your heart...&quot;
+    #     apt 'magic_beans_package'
+    #   end
+    #
+    # Second, only build the magic_beans dependencies:
+    #
+    #   package :magic_beans_depends do
+    #     apt 'magic_beans_package' { dependencies_only true }
+    #   end
+    #
+    # As you can see, setting options is as simple as creating a
+    # block and calling the option as a method with the value as 
+    # its parameter.
     class Apt &lt; Installer
-      attr_accessor :packages
+      attr_accessor :packages #:nodoc:
 
-      def initialize(parent, *packages, &amp;block)
+      def initialize(parent, *packages, &amp;block) #:nodoc:
         super parent, &amp;block
         packages.flatten!
         
@@ -16,7 +42,7 @@ module Sprinkle
 
       protected
 
-        def install_commands
+        def install_commands #:nodoc:
           &quot;DEBCONF_TERSE='yes' DEBIAN_PRIORITY='critical' DEBIAN_FRONTEND=noninteractive apt-get -qyu #{@command} #{@packages.join(' ')}&quot;
         end
 </diff>
      <filename>lib/sprinkle/installers/apt.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,42 @@
 module Sprinkle
   module Installers
+    # = Ruby Gem Package Installer
+    #
+    # The gem package installer installs ruby gems.
+    #
+    # The installer has a single optional configuration: source.
+    # By changing source you can specify a given ruby gems
+    # repository from which to install.
+    # 
+    # == Example Usage
+    #
+    # First, a simple installation of the magic_beans gem:
+    #
+    #   package :magic_beans do
+    #     description &quot;Beans beans they're good for your heart...&quot;
+    #     gem 'magic_beans'
+    #   end
+    #
+    # Second, install magic_beans gem from github:
+    #
+    #   package :magic_beans do
+    #     gem 'magic_beans_package' do
+    #       source 'http://gems.github.com'
+    #     end
+    #   end
+    #
+    # As you can see, setting options is as simple as creating a
+    # block and calling the option as a method with the value as 
+    # its parameter.
     class Gem &lt; Installer
-      attr_accessor :gem
+      attr_accessor :gem #:nodoc:
 
-      def initialize(parent, gem, options = {}, &amp;block)
+      def initialize(parent, gem, options = {}, &amp;block) #:nodoc:
         super parent, options, &amp;block
         @gem = gem
       end
 
-      def source(location = nil)
+      def source(location = nil) #:nodoc:
         # package defines an installer called source so here we specify a method directly
         # rather than rely on the automatic options processing since packages' method missing
         # won't be run
@@ -20,7 +48,7 @@ module Sprinkle
 
         # rubygems 0.9.5+ installs dependencies by default, and does platform selection
 
-        def install_commands
+        def install_commands #:nodoc:
           cmd = &quot;gem install #{gem}&quot;
           cmd &lt;&lt; &quot; --version '#{version}'&quot; if version
           cmd &lt;&lt; &quot; --source #{source}&quot; if source</diff>
      <filename>lib/sprinkle/installers/gem.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,49 @@
 module Sprinkle
   module Installers
+    # The base class which all installers must subclass, this class makes
+    # sure all installers share some general features, which are outlined
+    # below. 
+    #
+    # = Pre/Post Installation Hooks
+    # 
+    # With all intallation methods you have the ability to specify multiple
+    # pre/post installation hooks. This gives you the ability to specify
+    # commands to run before and after an installation takes place. All 
+    # commands by default are sudo'd so there is no need to include &quot;sudo&quot;
+    # in the command itself. There are three ways to specify a pre/post hook.
+    # 
+    # First, a single command:
+    #
+    #   pre :install, 'echo &quot;Hello, World!&quot;'
+    #   post :install, 'rm -rf /'
+    #
+    # Second, an array of commands:
+    #
+    #   commands = ['echo &quot;First&quot;', 'echo &quot;Then Another&quot;']
+    #   pre :install, commands
+    #   post :install, commands
+    #
+    # Third, a block which returns either a single or multiple commands:
+    #
+    #   pre :install do
+    #     amount = 7 * 3
+    #     &quot;echo 'Before we install, lets plant #{amount} magic beans...'&quot;
+    #   end
+    #   post :install do
+    #     ['echo &quot;Now... let's hope they sprout!&quot;, 'echo &quot;Indeed they have!&quot;']
+    #   end
+    #
+    # = Other Pre/Post Hooks
+    #
+    # Some installation methods actually grant you more fine grained
+    # control of when commands are run rather than a blanket pre :install
+    # or post :install. If this is the case, it will be documented on
+    # the installation method's corresponding documentation page. 
     class Installer
       include Sprinkle::Configurable
-      attr_accessor :delivery, :package, :options, :pre, :post
+      attr_accessor :delivery, :package, :options, :pre, :post #:nodoc:
 
-      def initialize(package, options = {}, &amp;block)
+      def initialize(package, options = {}, &amp;block) #:nodoc:
         @package = package
         @options = options
         @pre = {}; @post = {}
@@ -23,7 +62,7 @@ module Sprinkle
         @post[stage] += [yield] if block_given?
       end
 
-      def process(roles)
+      def process(roles) #:nodoc:
         assert_delivery
 
         if logger.debug?
@@ -38,35 +77,42 @@ module Sprinkle
       end
 
       protected
-
-        # Installation is separated into two styles that concrete derivative installer classes
-        # can implement.
-        #
-        # Simple installers that issue a single or set of commands can overwride
-        # install_commands (eg. apt, gem, rpm). Pre/post install commands are included in this
-        # style for free.
-        #
         # More complicated installers that have different stages, and require pre/post commands
         # within stages can override install_sequence and take complete control of the install
         # command sequence construction (eg. source based installer).
-
         def install_sequence
           commands = pre_commands(:install) + [ install_commands ] + post_commands(:install)
           commands.flatten
         end
 
+        # A concrete installer (subclass of this virtual class) must override this method
+        # and return the commands it needs to run as either a string or an array. 
+        #
+        # &lt;b&gt;Overriding this method is required.&lt;/b&gt;
         def install_commands
           raise 'Concrete installers implement this to specify commands to run to install their respective packages'
         end
 
-        def pre_commands(stage)
+        def pre_commands(stage) #:nodoc:
           dress @pre[stage] || [], :pre
         end
 
-        def post_commands(stage)
+        def post_commands(stage) #:nodoc:
           dress @post[stage] || [], :post
         end
 
+        # Concrete installers (subclasses of this virtual class) can override this method to
+        # specify stage-specific (pre-installation, post-installation, etc.) modifications
+        # of commands. 
+        #
+        # An example usage of overriding this would be to prefix all commands for a 
+        # certain stage to change to a certain directory. An example is given below:
+        #
+        #   def dress(commands, stage)
+        #     commands.collect { |x| &quot;cd #{magic_beans_path} &amp;&amp; #{x}&quot; }
+        #   end
+        #
+        # By default, no modifications are made to the commands.
         def dress(commands, stage); commands; end
 
     end</diff>
      <filename>lib/sprinkle/installers/installer.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,27 @@
 module Sprinkle
   module Installers
+    # = Rake Installer
+    #
+    # This installer runs a rake command.
+    # 
+    # == Example Usage
+    #
+    # The following example runs the command &quot;rake spec&quot; on
+    # the remote server.
+    #
+    #   package :spec do
+    #     rake 'spec'
+    #   end
+    # 
     class Rake &lt; Installer
-      def initialize(parent, commands = [], &amp;block)
+      def initialize(parent, commands = [], &amp;block) #:nodoc:
         super parent, &amp;block
         @commands = commands
       end
 
       protected
 
-        def install_commands
+        def install_commands #:nodoc:
           &quot;rake #{@commands.join(' ')}&quot;
         end
 </diff>
      <filename>lib/sprinkle/installers/rake.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,26 @@
 module Sprinkle
   module Installers
+    # = RPM Package Installer
+    #
+    # The RPM package installer installs RPM packages.
+    # 
+    # == Example Usage
+    #
+    # Installing the magic_beans RPM. Its all the craze these days.
+    #
+    #   package :magic_beans do
+    #     rpm 'magic_beans'
+    #   end
+    #
+    # You may also specify multiple rpms as an array:
+    #
+    #   package :magic_beans do
+    #     rpm %w(magic_beans magic_sauce)
+    #   end
     class Rpm &lt; Installer
-      attr_accessor :packages
+      attr_accessor :packages #:nodoc:
 
-      def initialize(parent, packages, &amp;block)
+      def initialize(parent, packages, &amp;block) #:nodoc:
         super parent, &amp;block
         packages = [packages] unless packages.is_a? Array
         @packages = packages
@@ -11,7 +28,7 @@ module Sprinkle
 
       protected
 
-        def install_commands
+        def install_commands #:nodoc:
           &quot;rpm -Uvh #{@packages.join(' ')}&quot;
         end
 </diff>
      <filename>lib/sprinkle/installers/rpm.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,72 @@
 module Sprinkle
   module Installers
+    # = Source Package Installer
+    #
+    # The source package installer installs software from source.
+    # It handles downloading, extracting, configuring, building, 
+    # and installing software. 
+    #
+    # == Configuration Options
+    #
+    # The source installer has many configuration options:
+    # * &lt;b&gt;prefix&lt;/b&gt; - The prefix directory that is configured to.
+    # * &lt;b&gt;archives&lt;/b&gt; - The location all the files are downloaded to.
+    # * &lt;b&gt;builds&lt;/b&gt; - The directory the package is extracted to to configure and install
+    #
+    # == Pre/Post Hooks
+    #
+    # The source installer defines a myriad of new stages which can be hooked into:
+    # * &lt;b&gt;prepare&lt;/b&gt; - Prepare is the stage which all the prefix, archives, and build directories are made.
+    # * &lt;b&gt;download&lt;/b&gt; - Download is the stage which the software package is downloaded.
+    # * &lt;b&gt;extract&lt;/b&gt; - Extract is the stage which the software package is extracted.
+    # * &lt;b&gt;configure&lt;/b&gt; - Configure is the stage which the ./configure script is run.
+    # * &lt;b&gt;build&lt;/b&gt; - Build is the stage in which `make` is called.
+    # * &lt;b&gt;install&lt;/b&gt; - Install is the stage which `make install` is called.
+    # 
+    # == Example Usage
+    #
+    # First, a simple package, no configuration:
+    #
+    #   package :magic_beans do
+    #     source 'http://magicbeansland.com/latest-1.1.1.tar.gz'
+    #   end
+    #
+    # Second, specifying exactly where I want my files:
+    #
+    #   package :magic_beans do
+    #     source 'http://magicbeansland.com/latest-1.1.1.tar.gz' do
+    #       prefix    '/usr/local'
+    #       archives  '/tmp'
+    #       builds    '/tmp/builds'
+    #     end
+    #   end
+    #
+    # Third, specifying some hooks:
+    #
+    #   package :magic_beans do
+    #     source 'http://magicbeansland.com/latest-1.1.1.tar.gz' do
+    #       prefix    '/usr/local'
+    #       
+    #       pre :prepare { 'echo &quot;Here we go folks.&quot;' }
+    #       post :extract { 'echo &quot;I believe...&quot;' }
+    #       pre :build { 'echo &quot;Cross your fingers!&quot;' }
+    #     end
+    #   end
+    #
+    # As you can see, setting options is as simple as creating a
+    # block and calling the option as a method with the value as 
+    # its parameter.
     class Source &lt; Installer
-      attr_accessor :source
+      attr_accessor :source #:nodoc:
 
-      def initialize(parent, source, options = {}, &amp;block)
+      def initialize(parent, source, options = {}, &amp;block) #:nodoc:
         @source = source
         super parent, options, &amp;block
       end
 
       protected
 
-        def install_sequence
+        def install_sequence #:nodoc:
           prepare + download + extract + configure + build + install
         end
 
@@ -20,7 +76,7 @@ module Sprinkle
           end
         end
 
-        def prepare_commands
+        def prepare_commands #:nodoc:
           raise 'No installation area defined' unless @options[:prefix]
           raise 'No build area defined' unless @options[:builds]
           raise 'No source download area defined' unless @options[:archives]
@@ -30,15 +86,15 @@ module Sprinkle
             &quot;mkdir -p #{@options[:archives]}&quot; ]
         end
 
-        def download_commands
+        def download_commands #:nodoc:
           [ &quot;wget -cq --directory-prefix='#{@options[:archives]}' #{@source}&quot; ]
         end
 
-        def extract_commands
+        def extract_commands #:nodoc:
           [ &quot;bash -c 'cd #{@options[:builds]} &amp;&amp; #{extract_command} #{@options[:archives]}/#{archive_name}'&quot; ]
         end
 
-        def configure_commands
+        def configure_commands #:nodoc:
           return [] if custom_install?
 
           command = &quot;bash -c 'cd #{build_dir} &amp;&amp; ./configure --prefix=#{@options[:prefix]} &quot;
@@ -53,38 +109,40 @@ module Sprinkle
           [ command &lt;&lt; &quot; &gt; #{@package.name}-configure.log 2&gt;&amp;1'&quot; ]
         end
 
-        def build_commands
+        def build_commands #:nodoc:
           return [] if custom_install?
           [ &quot;bash -c 'cd #{build_dir} &amp;&amp; make &gt; #{@package.name}-build.log 2&gt;&amp;1'&quot; ]
         end
 
-        def install_commands
+        def install_commands #:nodoc:
           return custom_install_commands if custom_install?
           [ &quot;bash -c 'cd #{build_dir} &amp;&amp; make install &gt; #{@package.name}-install.log 2&gt;&amp;1'&quot; ]
         end
 
-        def custom_install?
+        def custom_install? #:nodoc:
           !! @options[:custom_install]
         end
 
         # REVISIT: must be better processing of custom install commands somehow? use splat operator?
-        def custom_install_commands
+        def custom_install_commands #:nodoc:
           dress @options[:custom_install], :install
         end
 
       protected
 
+        # dress is overriden from the base Sprinkle::Installers::Installer class so that the command changes
+        # directory to the build directory first. Also, the result of the command is logged.
         def dress(commands, stage)
           commands.collect { |command| &quot;bash -c 'cd #{build_dir} &amp;&amp; #{command} &gt;&gt; #{@package.name}-#{stage}.log 2&gt;&amp;1'&quot; }
         end
 
       private
 
-        def create_options(key, prefix)
+        def create_options(key, prefix) #:nodoc:
           @options[key].inject(' ') { |m, option| m &lt;&lt; &quot;#{prefix}-#{option} &quot;; m }
         end
 
-        def extract_command
+        def extract_command #:nodoc:
           case @source
           when /(tar.gz)|(tgz)$/
             'tar xzf'
@@ -99,17 +157,17 @@ module Sprinkle
           end
         end
 
-        def archive_name
+        def archive_name #:nodoc:
           name = @source.split('/').last
           raise &quot;Unable to determine archive name for source: #{source}, please update code knowledge&quot; unless name
           name
         end
 
-        def build_dir
+        def build_dir #:nodoc:
           &quot;#{@options[:builds]}/#{options[:custom_dir] || base_dir}&quot;
         end
 
-        def base_dir
+        def base_dir #:nodoc:
           if @source.split('/').last =~ /(.*)\.(tar\.gz|tgz|tar\.bz2|tb2)/
             return $1
           end</diff>
      <filename>lib/sprinkle/installers/source.rb</filename>
    </modified>
    <modified>
      <diff>@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
   s.email = [&quot;crafterm@redartisan.com&quot;]
   s.executables = [&quot;sprinkle&quot;]
   s.extra_rdoc_files = [&quot;History.txt&quot;, &quot;Manifest.txt&quot;, &quot;README.txt&quot;]
-  s.files = [&quot;CREDITS&quot;, &quot;History.txt&quot;, &quot;MIT-LICENSE&quot;, &quot;Manifest.txt&quot;, &quot;README.txt&quot;, &quot;Rakefile&quot;, &quot;bin/sprinkle&quot;, &quot;config/hoe.rb&quot;, &quot;config/requirements.rb&quot;, &quot;examples/merb/deploy.rb&quot;, &quot;examples/rails/README&quot;, &quot;examples/rails/deploy.rb&quot;, &quot;examples/rails/packages/database.rb&quot;, &quot;examples/rails/packages/essential.rb&quot;, &quot;examples/rails/packages/rails.rb&quot;, &quot;examples/rails/packages/search.rb&quot;, &quot;examples/rails/packages/server.rb&quot;, &quot;examples/rails/rails.rb&quot;, &quot;examples/sprinkle/sprinkle.rb&quot;, &quot;lib/sprinkle.rb&quot;, &quot;lib/sprinkle/actors/capistrano.rb&quot;, &quot;lib/sprinkle/actors/vlad.rb&quot;, &quot;lib/sprinkle/configurable.rb&quot;, &quot;lib/sprinkle/deployment.rb&quot;, &quot;lib/sprinkle/extensions/arbitrary_options.rb&quot;, &quot;lib/sprinkle/extensions/array.rb&quot;, &quot;lib/sprinkle/extensions/blank_slate.rb&quot;, &quot;lib/sprinkle/extensions/dsl_accessor.rb&quot;, &quot;lib/sprinkle/extensions/string.rb&quot;, &quot;lib/sprinkle/extensions/symbol.rb&quot;, &quot;lib/sprinkle/installers/apt.rb&quot;, &quot;lib/sprinkle/installers/gem.rb&quot;, &quot;lib/sprinkle/installers/installer.rb&quot;, &quot;lib/sprinkle/installers/rake.rb&quot;, &quot;lib/sprinkle/installers/rpm.rb&quot;, &quot;lib/sprinkle/installers/source.rb&quot;, &quot;lib/sprinkle/package.rb&quot;, &quot;lib/sprinkle/policy.rb&quot;, &quot;lib/sprinkle/script.rb&quot;, &quot;lib/sprinkle/verifiers/directory.rb&quot;, &quot;lib/sprinkle/verifiers/executable.rb&quot;, &quot;lib/sprinkle/verifiers/file.rb&quot;, &quot;lib/sprinkle/verifiers/symlink.rb&quot;, &quot;lib/sprinkle/verify.rb&quot;, &quot;lib/sprinkle/version.rb&quot;, &quot;script/destroy&quot;, &quot;script/generate&quot;, &quot;spec/spec.opts&quot;, &quot;spec/spec_helper.rb&quot;, &quot;spec/sprinkle/actors/capistrano_spec.rb&quot;, &quot;spec/sprinkle/configurable_spec.rb&quot;, &quot;spec/sprinkle/deployment_spec.rb&quot;, &quot;spec/sprinkle/extensions/array_spec.rb&quot;, &quot;spec/sprinkle/extensions/string_spec.rb&quot;, &quot;spec/sprinkle/installers/apt_spec.rb&quot;, &quot;spec/sprinkle/installers/gem_spec.rb&quot;, &quot;spec/sprinkle/installers/installer_spec.rb&quot;, &quot;spec/sprinkle/installers/rpm_spec.rb&quot;, &quot;spec/sprinkle/installers/source_spec.rb&quot;, &quot;spec/sprinkle/package_spec.rb&quot;, &quot;spec/sprinkle/policy_spec.rb&quot;, &quot;spec/sprinkle/script_spec.rb&quot;, &quot;spec/sprinkle/sprinkle_spec.rb&quot;, &quot;spec/sprinkle/verify_spec.rb&quot;, &quot;sprinkle.gemspec&quot;, &quot;tasks/deployment.rake&quot;, &quot;tasks/environment.rake&quot;, &quot;tasks/rspec.rake&quot;]
+  s.files = [&quot;CREDITS&quot;, &quot;History.txt&quot;, &quot;MIT-LICENSE&quot;, &quot;Manifest.txt&quot;, &quot;README.txt&quot;, &quot;Rakefile&quot;, &quot;bin/sprinkle&quot;, &quot;config/hoe.rb&quot;, &quot;config/requirements.rb&quot;, &quot;examples/merb/deploy.rb&quot;, &quot;examples/rails/README&quot;, &quot;examples/rails/deploy.rb&quot;, &quot;examples/rails/packages/database.rb&quot;, &quot;examples/rails/packages/essential.rb&quot;, &quot;examples/rails/packages/rails.rb&quot;, &quot;examples/rails/packages/search.rb&quot;, &quot;examples/rails/packages/server.rb&quot;, &quot;examples/rails/rails.rb&quot;, &quot;examples/sprinkle/sprinkle.rb&quot;, &quot;lib/sprinkle.rb&quot;, &quot;lib/sprinkle/actors/actors.rb&quot;, &quot;lib/sprinkle/actors/capistrano.rb&quot;, &quot;lib/sprinkle/actors/vlad.rb&quot;, &quot;lib/sprinkle/configurable.rb&quot;, &quot;lib/sprinkle/deployment.rb&quot;, &quot;lib/sprinkle/extensions/arbitrary_options.rb&quot;, &quot;lib/sprinkle/extensions/array.rb&quot;, &quot;lib/sprinkle/extensions/blank_slate.rb&quot;, &quot;lib/sprinkle/extensions/dsl_accessor.rb&quot;, &quot;lib/sprinkle/extensions/string.rb&quot;, &quot;lib/sprinkle/extensions/symbol.rb&quot;, &quot;lib/sprinkle/installers/apt.rb&quot;, &quot;lib/sprinkle/installers/gem.rb&quot;, &quot;lib/sprinkle/installers/installer.rb&quot;, &quot;lib/sprinkle/installers/rake.rb&quot;, &quot;lib/sprinkle/installers/rpm.rb&quot;, &quot;lib/sprinkle/installers/source.rb&quot;, &quot;lib/sprinkle/package.rb&quot;, &quot;lib/sprinkle/policy.rb&quot;, &quot;lib/sprinkle/script.rb&quot;, &quot;lib/sprinkle/verifiers/directory.rb&quot;, &quot;lib/sprinkle/verifiers/executable.rb&quot;, &quot;lib/sprinkle/verifiers/file.rb&quot;, &quot;lib/sprinkle/verifiers/symlink.rb&quot;, &quot;lib/sprinkle/verify.rb&quot;, &quot;lib/sprinkle/version.rb&quot;, &quot;script/destroy&quot;, &quot;script/generate&quot;, &quot;spec/spec.opts&quot;, &quot;spec/spec_helper.rb&quot;, &quot;spec/sprinkle/actors/capistrano_spec.rb&quot;, &quot;spec/sprinkle/configurable_spec.rb&quot;, &quot;spec/sprinkle/deployment_spec.rb&quot;, &quot;spec/sprinkle/extensions/array_spec.rb&quot;, &quot;spec/sprinkle/extensions/string_spec.rb&quot;, &quot;spec/sprinkle/installers/apt_spec.rb&quot;, &quot;spec/sprinkle/installers/gem_spec.rb&quot;, &quot;spec/sprinkle/installers/installer_spec.rb&quot;, &quot;spec/sprinkle/installers/rpm_spec.rb&quot;, &quot;spec/sprinkle/installers/source_spec.rb&quot;, &quot;spec/sprinkle/package_spec.rb&quot;, &quot;spec/sprinkle/policy_spec.rb&quot;, &quot;spec/sprinkle/script_spec.rb&quot;, &quot;spec/sprinkle/sprinkle_spec.rb&quot;, &quot;spec/sprinkle/verify_spec.rb&quot;, &quot;sprinkle.gemspec&quot;, &quot;tasks/deployment.rake&quot;, &quot;tasks/environment.rake&quot;, &quot;tasks/rspec.rake&quot;]
   s.has_rdoc = true
   s.homepage = %q{http://sprinkle.rubyforge.org}
   s.rdoc_options = [&quot;--main&quot;, &quot;README.txt&quot;]</diff>
      <filename>sprinkle.gemspec</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>f19f7d0cb29dd59fbcbc7b002c419eafa52adf3c</id>
    </parent>
  </parents>
  <author>
    <name>Mitchell Hashimoto</name>
    <email>mitchell.hashimoto@gmail.com</email>
  </author>
  <url>http://github.com/crafterm/sprinkle/commit/33c10a3aa766308f6249e887cfefea609a53903b</url>
  <id>33c10a3aa766308f6249e887cfefea609a53903b</id>
  <committed-date>2008-07-19T03:20:03-07:00</committed-date>
  <authored-date>2008-07-19T03:20:03-07:00</authored-date>
  <message>I've started documenting all the classes in Sprinkle so that its a little bit easier to approach. I made it to the installers before I realized I had to go to bed. Will finish the other half tomorrow! Run rake docs to generate and view the docs so far.</message>
  <tree>ce0884341c8b380346de5ff38253a633358c86c0</tree>
  <committer>
    <name>Mitchell Hashimoto</name>
    <email>mitchell.hashimoto@gmail.com</email>
  </committer>
</commit>
