def prepare(args = {}, &block)
      @requirements = [args.delete(:require)].flatten
      
      raise ArgumentError, "requires a block" unless block_given?
      @prepare << block
    end
def prepare(args = {}, &block)
      @requirements = [args.delete(:require)].flatten
      
      raise ArgumentError, "requires a block" unless block_given?
      @prepare << block
    end
Prepare is used when you'd like to provision for
 arguments / variables to be set after the source definition.
 Eg, create a source definition for twitter, omitting the "username".
 Set the username using chaining later.

 Usage:
   # Definition
   Smoke.feed :twitter do
     prepare do
       url "http://twitter.com/#{username}/rss"
     end
   end

   # End use
   Smoke[:twitter].username(:benschwarz).output