= ROLLING WITH RUBY
____
,dP9CGG88@b,
,IP""YICCG888@@b,
dIi ,IICGG8888@b
dCIIiciIICCGG8888@@b
________GCCIIIICCCGGG8888@@@________________
GGCCCCCCCGGG88888@@@
GGGGCCCGGGG88888@@@@...
Y8GGGGGG8888888@@@@P.....
Y88888888888@@@@@P......
`Y8888888@@@@@@@P'......
`@@@@@@@@@P'.......
""""........
* home: http://proutils.github.com/roll
== DESCRIPTION
Roll is a library manager for Ruby. With Rolls developers can run there
programs in real time --no install phase is required for one program
to depend on another. This makes it very easy to work on a set of
interdependent projects.
== HOW TO USE
=== Setting Up
To use roll regularly you first need to add it your RUBYOPT environment
variable.
$ export RUBYOPT="-roll"
I suspect you will be using RubyGems too, in which case do:
$ export RUBYOPT="-rubygems -roll"
To support executables you will also need to add a line to your startup
.bashrc (or equivalent) file.
export PATH="$PATH:$(roll path)"
This will add the +bin+ locations of the programs encompassed by your
current roll environment.
(NOTE: The way bin paths are handled will probably change in the future
b/c it has some shortcomings.)
=== Preparing your Projects
For your projects to be detected by Rolls they must conform to a
minimal POM[http://proutils.github.com/pom] setup. In particular
the project must contain a +meta/+ directory with a +name+ and +version+
entry. That is the bare minimum for a project to to be loadable via
Rolls. Optionally you may provide a +loadpath+ entry if the load path
is not the +lib/+ default, as well as a +released+ date entry.
(NOTE: +meta/+ can be named +.meta/+ if you would prefer to hide the
directory, though we recommend keeping it visible.)
Here are examples of Ruby Facets +meta/+ entries.
$ cat facets/meta/name
facets
$ cat facets/meta/version
2.8.0
$ cat facets/meta/loadpath
lib/core
lib/more
$ cat facets/meta/ruby
1.8+
The +ruby+ entry informs Rolls of the particular implementations and versions
of Ruby the project should operate under successfully.
(NOTE: Rolls doesn't actually do anything with the ruby entry yet.)
Lastly, an +active+ entry can be set to +false+ to tell Rolls to skip the
project when searching for library files. See POM[http://proutils.github.com/pom]
for more information.
=== Library Management
Next you need to setup an roll *environment*. The default environment
is call +production+. You can add a library search location to it
using +roll in+. Eg.
$ roll in /opt/ruby/
As a developer you will often want to use a +development+ environment.
To change or add and environment, modify the RUBYENV environment variable.
$ export RUBYENV="development"
Then you can add the paths you want. For instance my development
environment is basically constructed like this:
$ roll in ~/programs/proutils
$ roll in ~/programs/rubyworks
$ roll in ~/programs/thedeadly
$ roll in ~/programs/transcode
By default these paths will be searched for POM conforming projects
up to a depth of three sub-directories. That's suitable for
most needs. You can specify the the depth explicitly with the
--depth or -d option. For example, lets say you
just want to add a single ruby project to the current environment.
You can do so by navigating to the root directory of a project and
executing:
$ roll in --depth 1
That's it. Your project is *READY-TO-ROLL*!
== LEARNING MORE
The above provides a brief overview of using roll. But there is more to
it. To get a deeper understanding of the system and how to use +roll+ to
it fullest extent, please visit http://proutils.github.org/roll/.
== HOW TO INSTALL
=== Manual Installation
You will need Ruby Setup, the standalone setup.rb script, in order
to install Roll. See: http://setup.rubyforge.org.
Once you have setup.rb, download the Roll tarball and install
it manually as follows:
$ tar -xvzf roll-1.0.0
$ cd roll-1.0.0
$ sudo setup.rb all
On Windows, this last line needs to be 'ruby setup.rb all'.
=== RubyGems Installation
We strongly recommend installing Rolls manually b/c
Rolls is a peer to RubyGems. However, you can use Gems to
install it; and this is a convenient way to try it out.
gem install roll
If you like Rolls, then later you can uninstall the gem and
install manually.
== BY THE WAY
Roll was RubyForge project #1004. She's been around a while! ;)
== LICENSE & COPYRIGHT
Roll, Copyright (c) 2006,2007 Thomas Sawyer
Rolls is distributed under the same terms as Ruby.
See the LICENSE file details.