Manifest captures the actions a generator performs. Instantiate a manifest with an optional target object, hammer it with actions, then replay or rewind on the object of your choice.
Example:
manifest = Manifest.new { |m| m.make_directory '/foo' m.create_file '/foo/bar.txt' } manifest.replay(creator) manifest.rewind(destroyer)