[Rails 5] rbenvでRubyをインストールして新規Rails開発環境を準備する

こんにちは、hachi8833です。

今回はrbenvを使ってRails 5のrails newを実行できるまでの環境づくりについてメモします。

以前のTechRacho記事「Rails4でサイト構築をする – Rails環境構築編」ではrvmを使いましたが、今回はBPS Webチームでも主流のrbenvにします。

1. rbenvとruby-buildをインストールする

rbenv
複数バージョンのRubyをインストールして簡単に切り替えるソフトウェアです。
ruby-build
rbenvのプラグインで、さまざまなバージョンのRubyの取得元が保存されています。新しいバージョンのRubyがリリースされるとruby-buildも更新されるので、これを取得することで新しいバージョンのRubyをrbenvで簡単にインストールできるようになります。

詳しくは本家Readmeにすべて書いてあります。

aptコマンドが使えるLinux環境の場合

apt-get installコマンドでインストールが完了します。

$ apt-get install rbenv ruby-build

yumDNFを使うLinuxディストリビューションの場合、rbenvはgit cloneでインストールします

新しいRubyがリリースされたら、以下を実行してruby-buildを更新できます。他のパッケージもついでに更新されます。

$ apt-get update
$ apt-get upgrade

注: 開発環境を念頭に置いているので、本番環境ではaptコマンドをむやみに実行しないようご注意ください。

Mac + homebrewの場合

homebrewを使ってインストールするのが楽です。

通常であれば、以下のようにrbenvとruby-buildをhomebrewでインストールします。

$ brew install rbenv ruby-build

私も当初上の方法でインストールしていましたが、homebrewのruby-buildはRubyの新バージョンリリース後すぐに更新されないことがよくあったので(1日〜2日ほどの遅れ)、以下の方法でホームディレクトリの.rbenv/pluginsの下に直接ruby-buildをインストールする方法に切り替えました。

$ brew install rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

git cloneでruby-buildをインストールした場合、新しいRubyがリリースされたときに次の方法でruby-buildを更新できます。

$ cd ~/.rbenv/plugins/ruby-build
$ git pull

補足: rbenv rehashは現在は不要

以前のrbenvでは、Rubyをインストール/アンインストールした後にrbenv rehashを実行する必要がありました。
これが面倒だということで、rbenv-gem-rehashというプラグインをインストールするのが流行ったことがあります。

しかしその後rbenvでrehashが不要になったため、rbenv-gem-rehashプラグインも非推奨(Deprecated)になりました。

補足: Macでpryに日本語を入力する

必須ではありませんが、Macのpryで日本語を入力できない場合、以下の方法で入力できるようになります(ついでにOpenSSLライブラリもインストールしています)。

Rubyをインストールする前に以下を実行します。

$ brew install readline openssl

通常ならこれでRubyをインストールすればpryで日本語を入力できるようになりますが、私のMac環境では以下の方法でRubyをインストールしないとpryで日本語を入力できませんでした。

$ RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install <バージョン>

必ずやらなければならないものでもないので、日本語が入力できない場合にどうぞ。

2. rbenvを設定する

2-1. パスの設定

以下を~/.bash_profileに追記し、シェルを再起動するか新しいシェルを起動するとパスが有効になります(.bash_profileが.bashrcで読み込まれるようになっているのが前提です)。

export PATH="$HOME/.rbenv/bin:$PATH"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

パスをすぐに有効にしたい場合は、以下を実行します。

$ source ~/.bash_profile

2-2. デフォルトgemの設定

rbenvをインストールすると、ホームディレクトリの.rbenvに以下のファイル/ディレクトリが作成されます。

rbenv dir

このうちdefault-gemsというファイルにgemの名前だけを記入しておくと、rbenvで新しいRubyをインストールするときにそのgemも自動でインストールしてくれます。

このファイルを有効にするには、Rubyをインストールする前にbrew install rbenv-default-gemsを実行する必要があります。

default-gemsにはどのgemを指定するのがよいか

default-gemsにどんなgemを記入しておくのがよいかは、Rubyの利用目的によってさまざまだと思います。

しかし、Rails開発であればdefault-gemsにはbundlerだけを記入するのがおすすめです。

bundler

default-gemsにたくさんのgemを追加するとRubyのインストールが遅くなるためです。

なお、私の場合はRailsと別にRubyを単独で使うことも多いので、pryとpry関連のgemだけ追加しています。

bundler
pry
pry-byebug
pry-stack_explorer
pry-doc

gemがインストールされる場所

  • rbenvを利用すると、default-gemsおよびgem installコマンドでインストールされるgemは~/.rbenv/versions/<バージョン>/lib/ruby/gems以下に置かれます。

  • Railsのproduction環境では、--deploymentオプションをつけることでプロジェクトフォルダのvendor/bundle以下にgemがインストールされます。これはrbenvとは無関係です。

参考: Railsのbundle install –deploymentとは何なのか

3. rbenvでRubyをインストールする

rbenvが準備できたので、最新バージョンのRubyをインストールしてみましょう。

3-1. ruby-buildのアップデート

以下の方法で最新のruby-buildを取得します。

  • aptが使えるLinux: apt-get update; apt-get upgrade
  • Mac: cd ~/.rbenv/plugins/ruby-build; git pull

3-2. Rubyバージョンの確認とインストール

  • rbenv install -lを実行し、ruby-buildで利用できるバージョンのリストを確認します。

  • インストールしたいバージョンを見つけたら、次を実行してRubyをインストールします。

# rbenv install <インストールするバージョン>

rbenvはRubyのソースコードを取得してビルドするので、それなりに時間がかかります。これは仕方がないですね。

  • rbenv versionsを実行し、Rubyがインストールされたことを確認します。*が付いているバージョンが現在アクティブなバージョンです。ディレクトリに.ruby-versionファイル(後述)があると、そこで指定しているバージョンが強制的にアクティブなバージョンになるのでご注意ください。

rbenv versions

3-3. Rubyバージョンを切り替える

  • rbenv global <バージョン>を実行すると、デフォルトのRubyバージョンを指定できます。
  • バージョン抜きでrbenv globalを実行すると、現在のグローバルなバージョンが表示されます。
  • Railsの特定プロジェクトのみ別のバージョンを指定するには、プロジェクトディレクトリでrbenv local <バージョン>と入力します。

rbenv localを実行すると、そのディレクトリに.ruby-versionという名前のファイルが作成されます。ファイルにはバージョン番号のみが指定されます。したがって、echo <バージョン> >.ruby-versionで作成しても同じ結果になります。

.ruby-versionファイルで指定されたバージョンは、そのディレクトリのサブディレクトリでも有効になります。

4. Railsプロジェクトを生成する

長くなりましたが、やっとRailsプロジェクトを生成できる環境が整いました。

以下の手順を使うことで、bundler以外のすべてのgemを新たにrubygems.orgから取り込んでrails newできます。

4-1. Gemfileを作成する

プロジェクトディレクトリを作成し、プロジェクトディレクトリに移動します。

$ mkdir プロジェクト名
$ cd プロジェクト名

以下の内容のGemfileを作成します。

source "http://rubygems.org"
gem "rails", "5.1.0" #利用するバージョンを指定する

プロジェクトでrubyのバージョンを指定したい場合は、例のrbenv local <バージョン>を実行して.ruby-versionファイルをプロジェクトディレクトリに作成します。

4-2. bundle install

Gemfileを置いたディレクトリで以下を実行します。--path vendor/bundleを指定しないと、gemがシステム側(この場合はrbenv)にインストールされてしまうのでご注意ください。

# --pathオプションを付けて実行
$ bundle install --path vendor/bundle

4-3. rails new

後はbundle exec rails new .を実行して好きに料理します。Gemfileを上書きするかどうかを尋ねられたら、上書きを指定します。

.を指定することで、カレントディレクトリ名がそのままプロジェクト名になるのがポイントです。

上で作ったGemfile、Gemfile.lock、vendorディレクトリはインストールのためだけのものなので、削除しておきます。

参考

関連記事

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ