Overview
ProUtils is a collection of tools evolved from a decades of experience in Ruby project development, maintenance and contribution. These tools work together to cover a wide spectrum of project development needs, from project scaffolding to release announcements. The collection includes the following tools devided into categories to simplify browsing.
Building / Scripting
POM :: Project Object Model. POM sprung directly out of Syckle. Every Syckle service tended to need common information about a project, i.e. metadata about a project. As Syckle enlarged and some services split-off into stand-alone tools, it became clear the metadata would be useful on it's own as well. Thus POM provides a farily extensive object model of project information. (And yes, the name was shamelessly stollen from Maven.)
Syckle :: Life-Cycle Build Tool. Syckle is the original ProUtils component. It is a project task managment system based on the idea of a fixed life-cycle work-flow. You can think of it as something like Maven for Ruby, but not as complicated and with all the good Ruby sugar.
Ratch :: Ruby-based Batch Scripts. Ratch is a DSL for Ruby making it easier to write file-system scripts in Ruby. The project is strictly experimental at this point.
Regex :: Regular Expression in the Shell. Regex is a simple tool that gives end-users access to Ruby's regular expression engine on the command line. It is similar to grep, but models in program regular expression matching more closely.
Scaffolding
Sow :: Sow generates project scaffolding from pluggable sources. It can generate complete project scaffolds, as well as partial scaffolding such as licenses, testunit tests, and so on.
Till :: Project Templating. Till runs a template system internally over a project, which can be used for simple things like updating embedded version numbers or more sophisticated forms of code-generation. Sow and Till are are closely related and have toiled with being a single project.
Testing
AE :: Assertive Expressive is a test/behavior assertions framework intended for use by any TDD/BDD or the like system. A.E. uses Higher-order methods (i.e. functors) to allow assertions to test any kind of condition an a natural and fluid manner.
QED :: Quality Enahnced Demos provides a literate programming techinique for creating vaerifiable demonstration of code. If it esspecially useful for API-driven development.
Lemon :: Lemon is tighly coupled unit-testing framework. It enforces mirroring of classes and methods to help ensure excllent test coverage.
Package / Library Management
Box :: Packaging Tool. Box makes it very easy to generate packages. You simply need to put your POM in order and create a MANIFEST. Box does the rest. Currently tar.gz, zip and gem formats are supported.
Mast :: Mast is a nifty tool for creating MANIFEST lists (which can be used by Box). Mast's MANIFEST files are self referential, so they can be created with extensive commandline options once and easily updated later without reissuing the entire command.
Roll :: Ruby Object Library Ledger. Roll provides a more advanced require system for Ruby. It is esspecially useful to developers working in interdependent projects --no vendoring and no install phases.
Setup :: A stand-alone version of Minero Aokoi's setup.rb script. While RubyGems has all but supplanted setup.rb for common packaging needs, setup.rb still proves useful in certain instances, such as a tool to operating system specific package distributors.
Forge :: Forge provides an API and Commandline frontend to rubyforge.org services. It's is similar to the more commonly used rubyforge gem. But rather then utilizing per-user configuration Forge is per-project and POM aware, which makes it a much easier to use. (NOTE: Since RubyForge is being phased out this library will either transision to being an commandline tool for SourceForge, or it too will be phased out.)
Documentation
DNote :: As developers we often make notes in our source code. D'Note scans source for these notes and compiles them into a consolidated listing for easy browsing.
WebRI :: "Hello good looking!" WebRi provides a high-level overlay upon RDoc and comes with a nice set of sexy RDoc templates to make your RDoc's pop.
Documentation Report IssueVCLog :: ChangeLog Generator. VCLog is a ChangeLog generator. It can generate ChangeLogs in a variety of formats to help with track project changes and release tags. It currently supports Git and SVN repositories.
Web Design / Hosting
Brite :: Static Website Generator. An abriviation for Web Write, Brite is quite likely the easiest static website generator on the planet, with support for blogging, tags, rhtml, liquid, markdown, textitle, syntax highlighting and so on.
Kite :: Websites in the Cloud. Kite can host any static web-site in the cloud. Currently it supports Amazon's s3 on the backend, but can be extended to support other file stores. The service end is built on Sintara and Rack and can easily run in a Heroku instance with an ultra small foot-print.
Tutorial
(Coming Soon...) To get a comprehensive overview of using Proutils in conjunction with each other, see the ProUtils Wiki provided by GitHub.
Requirements
Of course, the various ProUtil applications and libraries will have varying requirements, but they often share the following:
Ruby :: Ruby is of course required to use ProUtils. We recommend Ruby 1.8.7 for use with ProUtils. ProUtils should be compatible with Ruby 1.9, but it will be a while longer before it is fully tested.
Facets :: Ruby Facets provides a number of useful core extensions. Depending on the nature of the utility these are sometimes copied over rather then having Facets as a dependency.
Path :: The Path library provides a powerful and easy to use object-oriented approach to working with the filesystem.
Community
Mailing List
ProUtils has a single mailing list available to developers and end-users alike. The list is hosted via Google Groups. You can subscribe to the list by following the link: http://groups.google.com/group/proutils/topics.
Contact
If you have any questions, suggestions or contributions you'd like to make privately, you can contact Trans [transfire AT gmail DOT com].