RVM こうやって使うんだ 編

案の定、薄れていく記憶の中で備忘録。

今回RVMをサーバにも導入した。
理由は、

Rubyのバージョン違いを同居させる方法は、インストールディレクトリを変える等、色々あるようだが、今回は、何かとサポートしてくれるRVMを導入。
といっても、Mac上でも使ってるんですが。

まず、UserモードでインスコするのかSystemモードでインスコするのか、決める必要があります。
Userモードとは、Singleモードとも言うらしく、ようするにインストールしたユーザーのみしか使えません。
Systemモードとは、マルチユーザーモードとも言うらしく、すべてのユーザーから使えます。

どちらで、インスコするのか・・・・
はじめUserモードにしてインスコしたんですが、起動スクリプトをその場で動かそうとすると、エラーになったりして、なんかもう∩(・∀・)∩ モウ オテアゲダネ 見たいな感じになりまして・・・
Systemユーザーにてインスコしました。

今さらながら、いろいろやってるうちに、Userモードでも全然問題ないことが判明!!
私が、ちゃんとした方法を知らなかっただけですorz

Systemモードの場合
参考 http://d.hatena.ne.jp/pbgreen/20111002/1317536213

$ sudo bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
$ rvmsudo rvm install 1.9.3
$ rvmsudo rvm install ree

Systemモードは、コマンドが少し変わります。といっても少しだけです。

こっから知ったこと。

$ rvmsudo rvm gemset create ree@redmine

として、運用するアプリごとにgemsetを作るのがベター。
ええ、当たり前のことを知りませんでした。

コマンドは、以下のページを参照
http://d.hatena.ne.jp/hrsth/20110616/1308229846

さて、ここで、globalと自作のgemset(redmine)との関係ですが、Railsをglobal側に入れた場合、redmine側には必要無いみたいです。
つまり、globalが優先されるみたいです。
ネットで探しても、そんな記事みつからんのですが・・・

ん?言い方が悪いですね。オブジェクト風にいうと、自作gemsetがglobalのスーパークラスのように振る舞うようです。ん?気持ち悪いですよね。図にするとこうなんです!!

global > 自作gemset

globalが優先されるみたいなんですよ。
えっ違う?エロイ人どうなんすかね?

Rackのバージョンを変えようとして、自作gem側をいじっても変わらず、悩んでglobal側を消したらうまく言ったんですけど・・・。

いずれにせよ、globalには、何も入れず、自作gemsetに全て入れた方が、良いかもしれませんね。

そして、ApplicationRoot上に、.rvmrcを作っておくこと。
これが無いと、起動スクリプト等で、はまります。

$ vi .rvmrc
rvm use ree@redmine
rvm_install_on_use_flag=1

前に書いていた↓
$ vi .rvmc
誤植です。m(_ _)m

二行目は、スクリプト実行時の権限認証らしいです。
cronとか使う人は、書いておくべきらしいです。

Applicationフォルダ内に入ると、自動的にRVMが起動してくれます。
Systemモードにてインスコしたせいかわかりませんが、どのユーザーでApplicationフォルダ内に入ると、RVMを起動してくれます。

RVMで、管理しようとすると、ここまで仕込み入ります。
面倒ですけど、見返りはデカイっすよ。