README in reap-4.3.4 vs README in reap-4.4.0
- old
+ new
@@ -1,41 +1,50 @@
= Reap
-User Friendly Project Assitant for Ruby
+Project Assitant for Ruby
== What's This Then?
-Reap is a user friendly project assistant for Ruby developers.
+Reap is an easy to use project assistant for Ruby developers.
By organizing your project in a conventional manner,
-as promoted by setup.rb, Reap makes it easy to do the
+(as promoted by setup.rb), Reap makes it easy to do the
following tasks:
-* Generate RDocs.
-* Run unit tests.
-* Extract tests for scripts.
-* Create Ruby Gem packages.
-* Create standard .tgz, tbz (bzip2) and/or .zip packages.
+* Generate RDoc API documentation.
+* Run unit tests (each in it's ruby process).
+* Extract embedded tests from source code.
+* Run embedded unit test directly.
+* Create source tar and/or zip packages.
+* Create Ruby Gem and/or Debian packages.
* Publish documents to Rubyforge or other web sites.
* Announce a release to Ruby-talk or other mailing list.
* Prepare files for distribution (i.e. chmod, tag, etc.).
-* Upload packages (coming soon!).
+* Release distributions on Rubyforge or other host.
+* Even generate a DOAP project file.
If you have special needs that Reap doesn't accomodate,
-new task are farily easy to create. And I am always
-happy to hear suggestions.
+new tasks are farily easy to create. And I am always
+happy to engage suggestions.
== Installation
+Note that Reap requires Ruby Facets.
+
=== Gem Install
Install the ruby gem as you would any other:
<tt>gem install reap</tt>
-Reap requires Ruby Facets.
+Gems still suffers from the datadir problem,
+so the template and scaffold commands
+may report missing files if you use this
+installation method. A fix is in the works,
+but for the moment it is better to use the
+manual install.
=== Manual Install
To install manually follow the usual setup.eb steps:
@@ -50,39 +59,64 @@
== Usage
=== Using a Reap Task
Reap makes it pretty easy to use it's built-in tasks.
-Largely this is because it grabs common data from a ProjectInfo
-(or Reapfile) as available. Some Reap tasks are
-automatic b/c there are reasonable defaults, others
-_require_ entries in the ProjectInfo file.
+Largely this is because it grabs common data from the
+ProjectInfo file. Some tasks can operate automatically based
+on reasonable defaults, others require section entries
+in the ProjectInfo file.
For instance, to create a "package" target you generally do not need
an entry in the ProjectInfo file. Reap will package up everything
-in the typical directories and makes compressed versions in the
-common formats. It will then place those in either ../leaf/
-(for those or you using trunk/ branches/ layouts) or pkg/ otherwise.
-The same holds for other tasks. Reap will do it's best to extrapolate
-the needed information from the ProjectInfo file.
+in the typical directories and makes compressed versions in the most
+common formats. It will then place those in either dist/, pkg/,
+../packages/, ../dist or ../pkg. Depending on which of these exists.
+The reasonable assumtions exist for other tasks. Reap will do
+it's best to extrapolate the needed information waht's avaialbe
+in the ProjectInfo file.
-Of course no matter the level of content, you will of course need to
+Of course, no matter the level of content, you will need to
create this file in you projects main directory. A template is provided
-and a command line tool to copy it to your current directory. Simply type:
+and a command to copy it to your current directory. Simply type:
> reap template
-Then edit the ProjectInfo file. The fields are fairly self
-explanitiory. Apart from Reap such a file is nice to have just on
+Then edit the ProjectInfo file creted. The fields are fairly self
+explanitiory. Apart from Reap, such a file is nice to have just on
it's own merits too.
+Reap can also build an entire new project directory with all the
+standard components. Try:
+
+ > reap scaffold myproj
+
+A new directory will be created called 'myproj' with all the ususal
+directories like lib/, bin/, etc. If you use subversion for
+version management, you can create a subversion layout easily
+as well.
+
+ > reap scaffold svn
+
+For more help, use
+
+ > reap help
+
+or
+
+ > reap help [task]
+
+Supplying the task name provides specific help for that particular task.
+
+
=== Building a Reap Task
-Building a Reap task I pretty easy, but is is quite differt
-from building a Rake task.
+Building a Reap task is pretty easy too, but is is quite different
+from building a Rake task. You are just defining a method, but a
+whole class.
-Here's an, oh so simple, example:
+Here's an "oh so simple" example:
class OhSoSimple < Reap::Task
task_desc 'This is a custom reap task'
@@ -92,65 +126,63 @@
This is help information for a custom reap task.
}
- task_attr :ohso
+ alias_method :ohso, :task
- def init
+ def run
ohso.message ||= 'None Found!'
ohso.another ||= 'Again!'
- end
- # run the target task
- def run
- puts ohso.message + "\n" + @another
+ puts ohso.message + "\n" + ohso.another
end
end
The corresponding settings in the ProjectInfo file (master) will then be:
- default: Default text, if any.
+ message: Default text, if any.
+
ohsosimple:
another: Your other message here.
And to use it
> reap ohsosimple
-Reap used to use standard attributes for task properties.
-But this has changed as of v4.3.3. Now it uses 'task', which
-you can also reference by any name you like usng the #task_arr
-class method. The nice thing about using this interface instead
-of attributes is that reap will automatically search the
+While Reap had used instance varaibles for task properties in the past,
+But has changed as of version 4.3.3. Now it uses the 'task' object,
+which can be referenced by any name you like is you alias it.
+The nice thing about using this interface instead of instance
+variables is that reap will automatically search the
ProjectInfo's root if the property is not found in the task
specific section. This allows for a nice form of inheritance
within the document.
-Sometimes you may need to override this behavor. In that case
-just set the task property directly equal to the section property
-in the init method. Eg.
+Sometimes you may need to override this inheritance behavor, though.
+In that case just set the task property directly equal to the
+section property in the run method. Eg.
- def init
+ def run
task.message = section.message
...
end
Notice we used 'task' here rather than 'osho'. This task object
-is always available. In the above, 'osho' is just being referenced
-to 'task' via the #task_attr class method for readability convenience.
-Both refer to the same underlying object.
+is always available. In the above, 'osho' is just being aliased
+to 'task' for readability convenience. Both refer to the same
+underlying object.
== Status
-Reap is currently Usable Beta. Most of the tasks
-work very well. Refinements are still common though,
-and a few important tasks are still being planned.
+Reap is currently "Usable Beta". Most of the tasks
+work very well. Refinements are still common though.
== Legal
Reap
Copyright(c)2004-2006 Thomas Sawyer
Ruby License
+