1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby環境構築4

Last updated at Posted at 2018-12-30

はじめに

前回はRuby、rubygems、Gem、bundlerについてまとめた。いよいよrbenv(+ruby-build)を使う場合についてまとめる。

概要

rbenvはサーバーの中で複数のrubyバージョン環境を構築できるようにしてくれる。ruby-buildはrbenvのプラグインであり、rbenv配下で実際にrubyを導入してくれる。

ディレクトリ構成とインストール

ディレクトリ構造

これまでとはrubyの場所が違うので、改めて全体について1枚絵にする。
image.png

インストール

  1. rbenvとruby-buildの配置(紺色)
    git clone https://github.com/sstephenson/rbenv.git ~/.rbenvコマンドで、rbenvのファイル一式を配置する。git cloneなのであくまで配置するだけだ。ruby-buildも同様にgit clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-buildコマンドで配置する。

  2. .bash_profileの設定(水色)
    rbenvコマンドはrvenb/bin/にあるがここにはパスが通っていない。そこでecho 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile.コマンドを実行し、ログイン時に毎回パスが通るようにする。併せて、echo 'eval "$(rbenv init -)"' >> ~/.bash_profileコマンドでrbenv init -の実行結果も.bash_profileに書き込む。'rbenv init -'については、内容がちょっと難しいのでここでは割愛する。(versionsフォルダも作成される。)
    .bash_profileを設定し終わったら、exec $SHELL --loginで再ログインし、.bash_profileを実行する。'rbenv --version'でパスが正しく通ったか確認する。

  3. rubyのインストール(緑色)
    rbenv install --listでインストールできるRubyバージョンの一覧を表示し、rbenv install -v 2.6.0とバージョンを指定しインストールする。インストール後、 rbenv versionsを実行し、インストールされたrubyを確認する。今回は2.6.0と2.4.0をインストールした。
    インストール後はrbenv rehashコマンドを実行する。これも難しいので割愛するが、Rubyのバージョンをインストールしたとき、コマンドのあるgemを導入したときは必ず実施する必要がある。
    https://github.com/rbenv/rbenv#rbenv-rehash

  4. ディレクトリで使用するrubyの設定(黄色)
    ディレクトリに対して使用するrubyのバージョンを設定する。最初にrbenv global 2.6.0コマンドでglobalなrubyバージョンを設定する。これを設定すると、ディレクトリにrubyバージョンが設定されていない場合に利用されるrubyのバージョンを指定できる。具体的には、.rbenv/配下にversionファイルができ、そこにバージョンが書き込まれる。

    一方で、特定のディレクトリにバージョンを設定する場合は、設定するディレクトリに移動し、rbenv local 2.4.0コマンドで設定する。設定するとディレクトリに.ruby-versionが作成され、そこにバージョンが書き込まれている。

  5. 確認
    最後に、きちんと設定されているか確認する。確認は各々のRubyアプリケーションディレクトリで実行する。まずrbenv versionsでディレクトリで利用されるrubyのバージョンを確認する。そしてruby -vgem -vbundle -vを実行し、それぞれが利用可能なことを確認する。(bundlerについては、Rubyのバージョンによって入っているものと入っていないものがある。)

  • RubyAPP1/の場合

[ec2-user@ip-10-0-1-14 ~]$ cd RubyAPP1
[ec2-user@ip-10-0-1-14 RubyAPP1]$ rbenv versions
2.4.0

  • 2.6.0 (set by /home/ec2-user/.rbenv/version)
    [ec2-user@ip-10-0-1-14 RubyAPP1]$ ruby -v
    ruby 2.6.0p0 (2018-12-25 revision 66547) [x86_64-linux][ec2-user@ip-10-0-1-14 RubyAPP1]$ gem -v
    3.0.1
    [ec2-user@ip-10-0-1-14 RubyAPP1]$ bundle -v
    Bundler version 1.17.2
* RubyAPP2/の場合

    ```bash
[ec2-user@ip-10-0-1-14 RubyAPP2]$ rbenv versions
* 2.4.0 (set by /home/ec2-user/RubyAPP2/.ruby-version)
  2.6.0
[ec2-user@ip-10-0-1-14 RubyAPP2]$ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
[ec2-user@ip-10-0-1-14 RubyAPP2]$ gem -v
2.6.8
[ec2-user@ip-10-0-1-14 RubyAPP2]$ bundle -v
rbenv: bundle: command not found
The `bundle' command exists in these Ruby versions:
  2.6.0

まとめ

rbenvによって、アプリケーション単位でruby,rubygems,bundler,gemが分かりやすく管理できる。Rubyはバージョン間の互換性が低いプログラム言語であるゆえに、こういった形になったらしい。rbenvのinitとrehashを読み解ければほぼほぼクリアになるが、それはまた別の機会にする。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?