Posted at

「Rubyを始めよう!・・・・rbenv? gem? rvm?」

More than 3 years have passed since last update.

最近Rubyを始めました。

「よし、Rubyを始めるぞ!!インストールだ!」とは思ったものの、gemやら、rbenvやら、インストールという言葉には関係なさそうな言葉がたくさん出てきました・・・。

まとめようと思います。


環境

CentOSにRubyをインストールする前提で話を進めさせていただきます。


そもそもRubyはどんな言語?

Rubyは、日本人のまつもとゆきひろさんが開発されたオブジェクト指向スクリプト言語。

以下のような特徴を持つ。


  • オブジェクト指向言語である


    • Javaと同様にオブジェクト指向言語である。数値なども基本データ型もすべてオブジェクトである点がJavaと異なる。



  • インタプリタ言語である


    • 事前にコンパイルする必要がない。プログラムが動的に解釈され、実行される。



  • シンプルな文法


    • 例えば、RubyでHelloWorldを書こうとすると puts "Hello World!" の一行で完成。



また、Rubyを使用するWebアプリケーションフレームワークであるRuby on Railsもあります。


Rubyをインストールする

Rubyをインストールするにはいくつか方法があります。


システムのパッケージ管理システムを使用する

例えば、CentOSだとyumというシステムのパッケージ管理システムを使用してインストールすることができます。

sudo yum install ruby

でRubyのインストールができます。


そのほかのツールを使う

ここで登場するのが、rvmとrbenvです


rvmとは

Ruby Version Managerの略。コマンドラインツール。

何ができるかというと、Rubyのインストールやアンインストールを行うことができます。

システムのパッケージ管理システム(yumとか)と違う点は、rvmは複数のRubyのバージョンを管理できるということです。

rvmを使用すると、複数のRubyをそのバージョン毎に個々のパスにインストールできます。

そして、それら複数のバージョンの切り替えを簡単に行うことができます。

rvm install 1.8.7  # 1.8.7をインストール

rvm install 2.3.0  # 2.3.0をインストール

rvm list
# 1.8.7の情報と2.3.0の情報2つが表示される

rvm use xxx(xxxはバージョン)で使用するRubyのバージョンを切り替えることができます。

rvmを使用するためには、まずrvmをインストールすることが必要です。


rbenvとは

コマンドラインツール。

rvmと同じように、複数のRubyのバージョンを管理できますし、rbenvを使用する場合はrbenvをまずインストールする必要があります。

しかし、rbenv本体にはRubyのインストール機能はついていません。(rvmはインストール等をrvm単体で行えます)

rbenvはRubyのバージョンの切り替え機能しか提供していません。

rbenvでRubyを簡単にインストールする場合は、ruby-buildが必要になります。

(ruby-buildを入れなくても、自分でソースコードを持ってきてインストールもできます)

rbenv、ruby-buildはともにGitHubからcloneしてくることができます。

rbenvは単機能で、プラグイン等を入れることによって機能を追加することができます(ruby-buildのように)。そのため、rbenv本体はrvmよりも軽量でコンパクトなコマンドラインツールです。

開発を進めていくことを考えると、rvmやrbenvを使用するほうがよさそうですね。


Rubyにはライブラリがたくさんある

Rubyには多くのライブラリがあります。

そして、それらのライブラリは「gem」という形式で公開されています。

そしてこのgem形式のライブラリを管理するシステムがRubyGemsです。RubyGemsはRuby専用のパッケージ管理システムとなります。

gemコマンドを使用することで、gemパッケージのインストールやアンインストール、アップデート等を簡単に行えます。

gemはRuby のバージョン1.9以降、Ruby本体に標準でついてきます。

Rubyのライブラリは、https://rubygems.org/ のサイトで探したり、gemコマンドで探すことができます。

ちなみに、Ruby on Railsや、SQLiteをRailsから利用するために必要なsqlite3パッケージもgem形式のパッケージで、gemコマンドでインストールできます。


gemの管理

rvmでは、gemsetというものを作って複数のgemをひとまとめにすることができます。

このgemsetを複数作成し、開発するプロジェクトによって使うgemsetを切り替えることができます。

rbenvにはgemsetを作ったり切り替える機能がありません。

ですが、rbenv-gemsetを入れることでgemsetを作成し、gemsetを切り替えることができます。