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で、管理しようとすると、ここまで仕込み入ります。
面倒ですけど、見返りはデカイっすよ。