rbenvを使った場合、複数環境のRuby+Railsの組み合わせはどうインストールされるのか



実行条件
======
　rbenvはインストールされていないがrubyをひとつもインストールしない状況から始める。

```cmd:rubyが内にもインストールされていない環境を確認
>pwd
 /(インストールDir)/.rbenv
 
 >cd versions
 >ls
          #（何も出力されない）
```
1．rubyその１をインストール

```cmd:rbenvでインストール
>rbenv install ruby -v 2.3.0
```

2.rubyその１のインストール先を確認する

```cmd:確認のコマンド
>cd  /(インストールDir)/.rbenv/versions
>ls
2.3.0     #（ ディレクトリができていることを確認）
```

3.使用するrubyを指定する

```cmd:globalコマンド
>rbenv global 2.3.0
>ruby --version
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
（ rubyの確認をした）
```

4.インストール直後の上のフォルダを見てみる。
rbenvで管理されているrubyのgemは
バージョンごとに以下の形式のように管理されているようだ。

```
/(インストールDir)/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems
```

```cmd:中身を確認
ls
did_you_mean-1.0.0  net-telnet-0.1.1    rake-10.4.2  test-unit-3.1.5
minitest-5.8.3      power_assert-0.2.6  rdoc-4.2.1
```

5.一先ずrailsを入れてみる。

```cmd:gemからrailsを入れてみる。
 gem install rails -v 4.2.3
```

6.バージョンの確認

```cmd:
rails --version
Rails 4.2.3 #人によってはメッセージが出るかも
```
これがどこに入ったのか

```cmd:gemの格納先を確認する。
>cd /（インストールDir)/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems
>ls
actionmailer-4.2.3           minitest-5.8.3
actionpack-4.2.3             net-telnet-0.1.1
actionview-4.2.3             nokogiri-1.8.0
activejob-4.2.3              power_assert-0.2.6
activemodel-4.2.3            rack-1.6.8
activerecord-4.2.3           rack-test-0.6.3
activesupport-4.2.3          rails-4.2.3 <--(コレ)
arel-6.0.4                   rails-deprecated_sanitizer-1.0.3
builder-3.2.3                rails-dom-testing-1.0.8
bundler-1.15.1               rails-html-sanitizer-1.0.3
concurrent-ruby-1.0.5        railties-4.2.3
did_you_mean-1.0.0           rake-10.4.2
erubis-2.7.0                 rdoc-4.2.1
globalid-0.4.0               sprockets-3.7.1
i18n-0.8.6                   sprockets-rails-3.2.0
loofah-2.0.3                 test-unit-3.1.5
mail-2.6.6                   thor-0.19.4
mime-types-3.1               thread_safe-0.3.6
mime-types-data-3.2016.0521  tzinfo-1.2.3
mini_portile2-2.2.0
```
と確認できます。



7.rubyその２をrbenvで追加インストール

```cmd:rubyのバージョンを指定してインストール
rbenv install -v 2.4.1
```

8.バージョンの確認

```cmd:rubyのバージョンを確認する
rbenv global 2.4.1 #rubyのバージョンを切り替える
ruby --version
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
```

9.gemのインストール先を確認
gemのインストール先を確認する。
（細かいバージョンがディレクトリで違っているのが気になるが…）

```cmd:gemの格納先を確認する。
>cd /（インストールDir)/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems
>ls
did_you_mean-1.1.0  net-telnet-0.1.1    rake-12.0.0  test-unit-3.2.3
minitest-5.10.1     power_assert-0.4.1  rdoc-5.0.0   xmlrpc-0.2.
```

10.railsその２をインストール

```cmd:gemでバージョンを指定してrailsをインストール
gem install rails -v 5.1.0
```

11.バージョンの確認をする。

```cmd:
rails --version
Rails 5.1.0 
```

gemsの状態はどうなったか。

```cmd:gemの格納先を確認する。
>cd /（インストールDir)/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems
>ls
actioncable-5.1.0      i18n-0.8.6                   rails-dom-testing-2.0.3
actionmailer-5.1.0     loofah-2.0.3                 rails-html-sanitizer-1.0.3
actionpack-5.1.0       mail-2.6.6                   railties-5.1.0
actionview-5.1.0       method_source-0.8.2          rake-12.0.0
activejob-5.1.0        mime-types-3.1               rdoc-5.0.0
activemodel-5.1.0      mime-types-data-3.2016.0521  sprockets-3.7.1
activerecord-5.1.0     mini_portile2-2.2.0          sprockets-rails-3.2.0
activesupport-5.1.0    minitest-5.10.1              test-unit-3.2.3
arel-8.0.0             net-telnet-0.1.1             thor-0.19.4
builder-3.2.3          nio4r-2.1.0                  thread_safe-0.3.6
bundler-1.15.1         nokogiri-1.8.0               tzinfo-1.2.3
concurrent-ruby-1.0.5  power_assert-0.4.1           websocket-driver-0.6.5
did_you_mean-1.1.0     rack-2.0.3                   websocket-extensions-0.1.2
erubi-1.6.1            rack-test-0.6.3              xmlrpc-0.2.1
globalid-0.4.0         rails-5.1.0 <--（コレ）
```

12,rbenvを切り替えるとrailsのバージョンはどう変わるか

```cmd:rbenvの切り替えとバージョンの確認
>rbenv global 2.3.0
>rails --version
Rails 4.2.3

>rbenv global 2.4.1
>rails --version
Raisl 5.1.0
```

rbenvをするとrailsのバージョンも変わる。

結論
===
rbenvを使用した場合のrailsのインストール先は
rbenv globalで指定しているrubyのversionsの下に
次のようにインストールされる

```
/（インストールDir)/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/rails-4.2.3
/（インストールDir)/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/rails-5.1.0
```

ということでrbenvに入れたrubyのバージョン単位で
ruby+railsのバージョンの組み合わせを指定して開発できそう。
railsを複数サービス立てたい場合はこれらのインストールディレクトリを
指定知れば、複数のWEBricksをひとつのサーバーで実現できるかも。
（Dockerコンテナでやればいいじゃん。その意見はごもっとも
　ただLinuxのOSが古いとDocker入れられないし…。）


課題
===
ruby1 vs railsN
の指定管理方法は今後確認する。