query: tag:rvm

rvm の対話インターフェイスが変わってとまどったのでメモ。

普通に rvm install 2.0.0 とやると、インストールに必要なパッケージが足りていない場合に

pre>>
rvm requirements
<<--

が実行されて、sudo することを求められます。
これでは sudo できないユーザーでrvm install できないので、
足りないパッケージを root でインストールしてあげればいいのですが、
何が足りないのか教えてくれません。

足りないパッケージを知るには、一度

pre>>
rvm autolibs read-only
<<--

してから

pre>>
rvm install 2.0.0
<<--

すると、

pre>>
Missing required packages: ...
<<--

と教えてくれるので、これをインストールして再度 rvm install すれば ok
です。

posted by genki genki on Wed 15 May 2013 at 08:38 with 0 comments

.rvmrc ファイルを置いておくと自動的に使用するRubyのバージョンを切り替えられるので便利ですが、デプロイ先で利用する場合に毎回 .rvmrc を信頼するか Yes/No? と聞かれるのが自動化と相性が良くないので、

pre>>
% cd /path/to/.rvmrc
% rvm rvmrc trust
<<--

しておくとその後何も聞かれなくなります。

posted by genki genki on Tue 13 Dec 2011 at 09:10 with 0 comments

bundlerを使うとRubyアプリケーションごとに閉じたgemの依存関係を構築できるので、gemのバージョンの違いや環境ごとの違いで悩まされることが減ります。
これは非常に便利なのですが、rakeやunicornのようにコマンドをインストールするgemの場合、

pre>>
% bundle exec unicorn
<<--

のように、bundle execを介して実行する必用があって面倒です。
しかし、rvmを使えばこれを賢く解決できます。

比較的新しめのrvmとbundlerが必用になるので、
あらかじめ最新版をインストールしておいてください。

まず、以下のように適当なアプリケーション名などでgemsetを作ります。

pre>>
% rvm gemset create foo-app
<<--

作成したgemsetは

pre>>
% rvm gemset use foo-app
<<--

のようにしてアクティベートできます。新規に作成したgemsetの中身は
こんな感じになっています。

pre>>
% gem list

*** LOCAL GEMS ***

bundler (1.0.2)
rake (0.8.7)
<<--

bundler-1.0.2はちょっと古いので、gem udpateして最新のbundlerにします。

この状態であらかじめ用意しておいたGemfileに従ってgemをインストールします。

pre>>
% bundler install --system
<<--

これで foo-app gemset にはGemfileで指定したgem群が入った状態になり、rake, unicornなどのコマンド群もrvmがいい感じに取り計らってくれます。
あとは、rvm gemset use xxx を使えば適宜必用なgem環境を切り替えることができます。

ただ、アプリケーションが複数ある場合に、頻繁にgem環境を切り替えるのは面倒です。
アプリケーションのrootディレクトリに .rvmrc というファイルを作って

pre>>
rvm use ruby-1.8.7-p302@foo-app
<<--

のように記述しておいておくと、cd した時にrvmが勝手にgemsetを切り替えてくれます。これで完璧ですね!

Bye bye gem hell!

posted by genki genki on Sat 28 May 2011 at 21:36 with 0 comments