centos7でRubyをrbenvでバージョン管理する~システムワイドと特定ユーザ~

#前提条件と構築環境
-ハイパーバイザー型での仮想環境
→virtualbox(+vagrant)、VMwareなどを使用した仮想化技術(ってやつらしい)
→最近はコンテナ型のdockerが流行ってますねと
導入の記事書きました → [dockerを導入する](http://qiita.com/hironeko/items/3d1921a2092a0584978e)
　
-centos7
-windows or mac
-ターミナルエミュレーター※windowsのみ

centos導入までは別記事にて手順を書きました
[エンジニア初学生が仮想環境導入でやったこと](http://qiita.com/hironeko/items/9389b433504676ce2447)
　　
　
#環境ができたら
　
1.vagrantの方
rubyが古いのでひとまずアンインストールします
``sudo yum remove ruby``
　
#rubyのバージョン管理をする
rbenvというものがあります。この方すぐれものなのです。
複数のプロジェクトを異なるrubyのバージョンで管理することを可能にしてくれます(バージョンの切り替え？というより振り分けと言った方がしっくりくるかも？が可能です)

・その前に

```
$ 一般ユーザ
# root
```

で表記します
　
・特定ユーザで管理
git cloneを行うのでgitがない方は
``$ sudo yum install -y git``
ユーザのhomeディレクトリで

```

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

```
　　
　
・システムワイドで管理＝全ユーザで使うように
追記です。
こちらコマンド実行をする際は、一番上の階層のルートディレクトリにて実行するのが前提となっております。

```
# cd / #一番上の階層に上がります
# git clone https://github.com/sstephenson/rbenv.git usr/local/src/rbenv
# git clone https://github.com/sstephenson/ruby-build.git usr/local/src/rbenv/plugins/ruby-build

```
　
※最初にログインした階層でコマンドを実行したい場合は、

```
# git clone https://github.com/sstephenson/rbenv.git /usr/local/src/rbenv
```
上記の様に/をusrの前に入れてください。

・※どうしてusr/local/srcに入れるのか？
linuxのOSでは、システム管理者がアプリケーションをインストールする場所としてusr/local/を利用するのだそうだ
今回はソースコードなんでsrcってディレクトリを作りつつそこにインストールしました。
　
#rbenvが使用できるようにPATH(環境変数の登録)を通します
→要するにrbenvコマンドを使えるようにするわけです
　
-特定ユーザ

```
$ echo 'export RBENV_ROOT="/usr/local/.rbenv/"' >> ~/.bash_profile
$ echo 'export PATH="${RBENV_ROOT}/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ cat ~/.bash_profile　　確認
$ source ~/.bash_profile　　問題なければ再読み込み
$ rbenv --version　　お決まりのバージョン確認
```
※.bash_profileは、デフォルトで存在すると思う
　
　
-システムワイド
　
→今回はetc/profile.d/直下にrbenv.shというshellスクリプトファイルを作成します。※デフォルトではありません
以下のような記述で作成も同時にしてくれます。　

```

# echo 'export RBENV_ROOT="/usr/local/src/rbenv/"' >> /etc/profile.d/rbenv.sh　
# echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
# echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
# cat /etc/profile.d/rbenv.sh　　確認
# source /etc/profile.d/rbenv.sh　　問題なければ再読み込み
# rbenv --version　　お決まりバージョン確認
# su 一般ユーザ　　一旦一般ユーザに切り替えます
$ source /etc/profile.d/rbenv.sh　　一般ユーザで使えるように反映させます
$ rbenv --version　　バージョンが確認ができれば問題ありません　
$ su root　　root戻ります
　
```
　
　
#rubyのinstall
　
まずrubyをinstallする前に特定ユーザ、システムワイドどちらでも以下をinstallしてください　
``yum install -y openssl-devel readline-devel zlib-devel``
特定ユーザならば、先頭に``sudo``をつけてください　
　
　
・特定ユーザ&システムワイド
打つコマンド自体は同じです
　
``rbenv install -l``installできるrubyのバージョンの一覧を表示
``rbenv install バージョン``指定のバージョンがinstallされます
``ruby -v``で一応確認できなくないこともないですが以下のように表記されるかと

```
　
rbenv: ruby: command not found

The 'ruby' command exists in these Ruby versions:
2.2.3
　
```

#使用するrubyのバージョンを決める
　
1.システム全体で使う場合

```
rbenv global バージョン
```

2.プロジェクト単位でrubyのバージョンを変える場合
このコマンドを実行する際は対象のプロジェクトのカレントディレクトリで行ってください

```
rbenv local バージョン
```

#おそらくの流れ

1.自分は独学のため、確証はありませんが以下の手順でgem installを行いました

```
gem update --system
gem install bundler
gem install rake
gem install --no-ri --no-rdoc rails
```
　
　
　
#開発時のおまけと忘備録
　

1.ruby,railsはgemを使用する際は、依存関係があるのでバージョンを指定してGemfileを記述することを勧めます
　
　
2.ファイルバージョン管理を行う際
-bundle isntallをする際、オプションで--path指定します。
通例的なのかルールなのかみなさんvendor/bundleとしているので自分はそうしてます。※後日ちゃんと調べます。すみません
path指定した先はファイルバージョン管理外に置きます
他にもprecompileされたファイル群とかcacheとか
バージョン管理外に置くものが多いです。　

　
3.rakeコマンドとか
-基本、bundle execをつけてコマンドを実行します
　
　
4.gemは便利なものが多いですが、ruby、railsのメジャーアップデートをし続ける場合、ローカルアップデートのみ行う場合などプロジェクトに合わせて使用する場合がほとんどかと思いますが
いかんせんrails 二か月ちょいの自分からすればまだまだ知らないことが山ほどあり「へ～便利っすね～gem先輩！」具合なスタンスです
　
　
#最後に

長々とお付き合いいただきありがとうございます。
本当はrailsアプリの作成まで書きたいな～って思ってましたが
まぁそんな体力は持ち合わせてなく一旦ここでしめさせていただきます
また足りない部分、不要な部分、誤述等ございましたらコメント等でご指摘、ご指導をよろしくお願いします。
　
　
　

#おまけ
・mac
Homebrewを使用してインストールします
``$ brew install rbenv ruby-build``
※Homebrewを放置してたなーって人はupdateしてください
あとは似た流れになります。
PATHを通すあたりからになると思います。