Austin Ziegler wrote:
>   program         # no extension, but #!/usr/bin/env ruby at the top
>   program.bat     # wrapper to "program" for Windows users.
>   lib/program/    # all of the supporting stuff for the program is
>                   # in a private lib directory. 'program' uses
>                   # $:.unshift ".\lib" to make this work.

This is also useful, in the main program file:

app_dir = File.dirname(__FILE__)
$LOAD_PATH.unshift(File.join(appdir, "lib"))

This way, it doesn't matter what the current dir is when the program is 
run. If it's called from a batch file or a symlink somewhere, it will 
still find its libs.