Rubyのrvmやgemってなんだ?て調べたらrbenvが出てきたの巻

| コメント(0) | トラックバック(0)

まえがき

gemやらrvmとかよく目にするコマンドだけど この2つの違いがよくわからず、今まで放置してました。

今まで、Ruby自体学習のみで基本的な構文を動かしてみただけで がりがりコードは書いてませんでした。

最近になってやっと、Rubylistを名乗るためコードを書くか!
と思っていろいろモジュール利用しようと思った次第です。

しかしJavaScriptに浮気したり、tmuxさわり始めたり、 emacsの環境を弄くりまわったり、またjqueryいじったりで道がそれるソレル・・・

と言う訳で、google先生教えて!!で調べました
(そしてgithubアカウント持ってなかったので登録やら、で、また道がそれる)

しかし、ここであらたなrbenvを発見

本題

基本的にrvm gemの2つはRubyのモジュール群をネット経由で一発インストールする仕組みです。

じゃ違いは何なの?てことで下記、rbenvもあわせて3つの「~とは」

gem とは

  • Rubyに本体に付属して標準で入っている
  • ライブラリ・モジュール (perlのCPAN,phpのpear,MSDNライブラリ?みたいな扱い )
  • gemコマンドを使って簡単にinstallやremove 等ができる。
    (yum apt MacPortsみたいな)

RubyGems Manuals 引用

1.2 What is a Gem?

A gem is a packaged Ruby application or library. It has a name (e.g. rake) and a version (e.g. 0.4.16).

Gems are managed on your computer using the gem command. You can install, remove, and query (amoung other things) gem packages using the gem command.

rvm とは

  • Rubyの本体に付属していない
  • Ruby自体のバージョンを切り替え可能 (ruby-1.8.x やら ruby-1.9.x)
  • gemも一緒に切り替え
  • rvmコマンドを使って簡単に管理できる。
  • bashがあれば動く (rubyがなくてもbashからrvm install→ruby installが可能)

RVM: Ruby Version Manager 引用

Introduction

RVM is a command-line tool which allows you to easily install, manage, and work with multiple ruby environments from interpreters to sets of gems.

rbenv とは

  • Rubyの本体に付属していない
  • Ruby on Railsの開発者がいる37signalsが作った。
  • rmvをよりシンプルにしたRuby自体のバージョンを切り替え
  • rvmより動作が軽い
  • Do 1 ユーザー権限ごとにバージョンを切り替え (システム全体には影響しない)
  • Do 2 プロジェクトごとに合わせた、Rubyバージョンのサポート
  • Do 3 そのため開発する際、Rubyバージョンに合わせた環境変数を用意する。

github rbenv引用

Simple Ruby Version Management: rbenv

rbenv lets you easily switch between multiple versions of Ruby. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

rbenv does...

・Let you change the global Ruby version on a per-user basis.
・Provide support for per-project Ruby versions.
・Allow you to override the Ruby version with an environment variable.

rvmとrbenvの違い

gem rvm rbenvの概要はわかったとして、 じゃあrvmとrbenvがどう違うのか

RVMと違って、rbenvでは下記事項は行いません

  • shellのロード
    代わりにrbenvのアプローチは$PATHに対しディレクトリを追加します

  • shell commandの上書き
    cdコマンドを上書きする事は、危険なエラーが発生しやすいです。

  • 設定ファイルを持つこと
    rbenvでは使用したいRubyのバージョン以外は設定する必要はありません。

  • Rubyのインストール
    rbenvでは自分自身でRubyをコンパイル&インストールするか、 または ruby-buildを使って自動インストールができます。

  • gemsetsの管理
    RVMと違いgemは管理しません。 Bundlerは依存関係を管理するための良い方法です。 まだ利用していなければrbenv-gemseプラグインをインストールできます。

  • 互換性のため、Rubyライブラリのrequireを変更する必要があります。
    rbenvはシンプルです、$PATHさえ覚えておくだけで十分です。

  • プロジェクトを切り替えたときのエラー警告表示
    rbenvでは各プロジェクトごとにバージョン名を読み取りますので簡単です。

※rvmを理解していないので、だいぶ訳が怪しいです。

 rvmとrbenvでは違いを見るかぎり、 rbenvのほうが後発、良いとこ取りをしている感じです。

しかも37signalsのネームバリューがあるので今後の発展や動作も信頼はできそうです。 ネームバリュー強っ!

github rbenv下記部分を引用

In contrast with rvm, rbenv does not...

そもそもRubyはどうして管理ツールが乱立しているの?

rubyはバージョンごとにコードが動かなくなるから?

1.8系と1.9系では一部仕様が違うみたい?

まとめ

利用用途を想定するなら下記でしょうか。

  • Rubyの入門勉強のためだけなら → gem
  • 古いrubyとrvmを今まで使っている、今後もそのまま → rvm
  • 新しい物好き → rbenv

自分としては、せっかくなのでrbenvを使っていこうと思いました。

次回予定!、rbenvを使ってみる編 次回へ

※次回を追加更新しました。 2012/3/12

※注意、間違いツッコミなどありましたらtwitterやらメールやらご指摘いただければ幸いです。

参考ページ

関連記事

トラックバック(0)

トラックバックURL: http://mukaer.com/cgi-bin/mt/mt-tb.cgi/53

コメントする

PR

PR





検索

Loading

メニュー

twitter