One of the joys of modern programming is the ability to utilize external code libraries to speed up development, saving time, and reducing wasted effort. The Ruby language is especially blessed in this regard with its system of code gems. Instead of the narrow minded NIH (not invented here) mindset, the world has become our tool chest.
There is, however, a downside to this modular nirvana. Versioning! To be precise: Am I using the correct version of each (and every) little code gem? This problem goes back all the way to the old Visual Basic days. Back then it was called DLL Hell, as developers struggled to maintain a myriad of cryptic, often poorly documented binary files.
Now Ruby does have the bundler utility that allows gem versions to be specified, but what if you simply want to know: When I use this application, what modules/classes are being used?
The vls utility answers that question. To use this simply enter:
$ vls <names>
where names are a list of gems/files to be required before the modules are listed. Here, see an example of this in action:
$ vls fOOrth vls (VersionLS): 0.1.0 Bignum, 0.0.5 Complex, 0.0.5 Date::Infinity, 0.0.5 FalseClass, 0.0.5 Fixnum, 0.0.5 Float, 0.0.5 FormatEngine, 0.7.2 FullClone, 0.0.5 Gem, 2.2.2 InArray, 0.1.5 Integer, 0.0.5 MiniReadline, 0.4.8 NilClass, 0.0.5 Numeric, 0.0.5 Rational, 0.0.5 Regexp, 0.0.5 RubySscanf, 0.2.1 SafeClone, 0.0.3 Symbol, 0.0.5 TrueClass, 0.0.5 XfOOrth, 0.6.1
Peter Camilleri (aka Squidly Jones)