Ruby RVM Complexity
Undocumented Surprise Change
Am quite annoyed with ruby rvm. (if you don't know what it is, see: Ruby: What's RVM, Gem, Rake, Bundler, RDoc, ri, irb?)
rvm requirement
used to print a list showing you what libs you need (at least as of in 2013 February). Now (), it start to install software without warning.
To be sure, i run rvm --help
, and indeed it claims to list files only:
requirements :: Shows additional OS specific dependencies/requirements for building various rubies.
But now:
◆ rvm requirements Installing requirements for ubuntu, might require sudo password. [sudo] password for xah:
Google Search is getting stupid. After 10 min, i can't find no info.
Also, i can't find any sort of release notes about this. RVM homepage also is pretty bad. Huge number of files, extremely complex, badly written (same level as unix man pages)
Then, i went to ❮https://duckduckgo.com/❯ search. Searching for “rvm requirements change”, and indeed, first result is https://groups.google.com/group/rubyversionmanager/browse_thread/thread/051b3c85e544efc4. It's a rvm forum, and another guy made the same complaint about the undocumented change of “rvm requirements”.
I actually spend a hour or two on this.
For the record, am using rvm 1.20.12.
Non-standard Ways
The installation of rvm is also pretty weird.
It installs by $ \curl -L https://get.rvm.io | bash
That means, it uses curl to fetch a script, then simply run bash on it.
That URL, actually redirect to ❮https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer❯, another weirdness.
Also, note the syntax \curl
, which is a esoteric mechanism in bash that prevents it running a alias with the same name. All these is pretty weird. If user really have set alias to curl, then we assume he really do, maybe he's got some setup of curl or other reasons. And also, why curl and not wget? wget is by default installed, curl is not. And, why the redirect? Why not put the real path? And, it's strange to grab a script online and feed it directly to bash. It'd be simpler and normal to tell user to wget a url, then run that as installation script. Also, there's standard debian package.
Also, note the installation page, typical of unix man pages, exceedingly unnecessarily complex. It lists various things all together in one place. It'd be simpler, to tell user of separate steps. For example, one page on just installing rvm. Then, a separate page on how to use rvm to install ruby, rail, or other libs.
Complex Program
Now, if you do man rvm
or rvm --help
, you'll see it's very complex.
Just rvm itself, no ruby, has 199 dirs, 742 files. See: Ruby: RVM Directory Structure .
Odd Thank You Note
When you install rvm, you get a odd “thank you” note that address you by name. Here's example of install log:
xah@xah-p6813w◆ 2013-05-29 01:45 ◆ ~ ◆ \curl -L https://get.rvm.io | bash % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 184 100 184 0 0 755 0 --:--:-- --:--:-- --:--:-- 1304 100 13466 100 13466 0 0 30118 0 --:--:-- --:--:-- --:--:-- 124k Downloading RVM from wayneeseguin branch master % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 124 100 124 0 0 235 0 --:--:-- --:--:-- --:--:-- 379 100 1067k 100 1067k 0 0 218k 0 0:00:04 0:00:04 --:--:-- 272k Installing RVM to /home/xah/.rvm/ Adding rvm PATH line to /home/xah/.bashrc /home/xah/.zshrc. Adding rvm loading line to /home/xah/.bash_profile /home/xah/.zprofile. * WARNING: You're using ~/.profile, make sure you load it, add the following line to ~/.bash_profile if it exists otherwise add it to ~/.bash_login: source ~/.profile # RVM: Shell scripts enabling management of multiple ruby environments. # RTFM: https://rvm.io/ # HELP: http://webchat.freenode.net/?channels=rvm (#rvm on irc.freenode.net) # Cheatsheet: http://cheat.errtheblog.com/s/rvm # Screencast: http://screencasts.org/episodes/how-to-use-rvm # In case of any issues run 'rvm requirements' or read 'rvm notes' Installation of RVM in /home/xah/.rvm/ is almost complete: * To start using RVM you need to run `source /home/xah/.rvm/scripts/rvm` in all your open shell windows, in rare cases you need to reopen all shell windows. # Xah Lee, # # Thank you for using RVM! # I sincerely hope that RVM helps to make your life easier and # more enjoyable!!! # # ~Wayne
Note the bottom.
I can't say there's anything wrong with it exactly, but everything about rvm is just a bit weird.
really dislike rvm. One HUGE, COMPLEX, set of bash scripts. Yes, bash shell scripts, in the year of our lord 2013.
The choice of bash couldn't possibly be ease/compatibilities/portability issue, because it does requires certain later version of Bash, and not Bourn Shell, and it uses advanced features of bash. Perl has been default install on Linuxes and Mac OS X for many many years. Default Perl would be much more powerful and flexible than bash. Or, they could've relied on a universal version of Ruby such as version 1.8 or earlier. After all, rvm is about Ruby.
Though, it seems rvm is nevertheless robust. Its authors know bash and unix system really well.
rvm is created by Wayne E Seguin and Michal Papis.
Also, although i find rvm distasteful, but one of its author, Michal Papis, has been very helpful. In 2013 February, i randomly bitched about rvm on twitter, and he helped me solve the problem.