rbenv-gemsetを使ってプロジェクト毎のgemを管理して、railsプロジェクトを開始する

# rbenv-gemsetという存在を知る
インストールはhomebrewで行います。

```
$ brew install rbenv-gemset
```

## rbenvとコンボで使う管理ツールです
仕組み的には、プロジェクトの中にある.ruby-versionに伴い、.rbenvの中に格納されるrubyバージョンのディレクトリにgemsetsというディレクトリを設置します。

このrbenv-gemsetを利用する前に、rbenvを用意する必要がありますので、こちらを先に読んで設定の上、下記から始まる記事を読んでください。
[rbenvでプロダクト毎にrubyのバージョン管理をする](https://qiita.com/Nedward/items/283dd2beed1a5a9221aa)

rbenvでの設定が済んだら、下記のようにしてgemsetを作成していきます。

```
rbenv gemset create 使われているRubyバージョン gemセットの名前(プロジェクト名にするのがセオリーのようです)

(ex:
rbenv gemset create 2.6.0 gemgem-yes
```

### list
これを使うと設置したgemset名とそれに紐づいたrubyバージョンをみることができます。

```
rbenv gemset list
```

## gemsetを有効にする

有効にするために、プロジェクトのディレクトリ内で

```
echo >.rbenv-gemsets gemset名
```

で、.rbenv-gemsetsというファイルを作成します。

```
rbenv gemset active
=> gemset名 global
```

こうすることで、上記のように、gemsetが有効化します。この状態でbundle insetallをすると作成されたgemsetのディレクトリにgemが入っていきます。

## Railsのアプリケーションの開発環境を整える
　状況としては2パターンです。元々開発されているアプリケーションにアサインされた時か、新しくアプリを作る時です。
若干手順が異なるので、ここに記しておこうと思います。

### 新規アプリの場合
まずは、gemコマンドを使ってRails本体をインストールします。

#### 気をつけなければならないこと
初めて開発環境を構築する時、macで行う時限定かもしれませんが・・・windows環境はわかりません・・・すいません。
macの場合、元々入っているgemとrailsに妨害を食らって、**sudo gem install railsループ**にハマる可能性があります。

試しに、whichコマンドを打ってみると、

```
$ wich rails
/usr/bin/rails
```

こんな風にデフォルトで入ってる邪魔な奴がいます。本質的にはパスの問題なので、以前書いた[apple-git問題](https://qiita.com/Nedward/items/2380fc49183331f0219a)と同じシチュエーションですが、Railsの方がハマりやすい罠として顕現する気がします。

なぜなら、嘘の指示を出してきますからね・・・sudo gem install railsのコマンドを言われた通りに行うと、rbenvの実行権限が変化し、更なる面倒くさい事態を引き込むことになるからです。
もし、既にこのsudo gem install railsのループにハマり、今度は、gem uninstall railsなどのコマンドすらPermission deniedが原因で打てなくなったら、まず、下記コマンドで実行権限を奪還してください。

```
$ sudo chown -R ユーザー名:staff /Users/ユーザー名/.rbenv                                                                                                                                        
```

さて、実行権限を奪還したら、今度は、.rbenv内部にインストールしたrailsを使えるようにします。Catalinaからシェルのデフォルトはzshになったので、.zshrcの書式でここでは記述します。bashやfishをお使いの方は、適宜書き換えてください。

```.zshrc
export PATH=$HOME/.rbenv/shims:$PATH
```

変更をsourceコマンドで反映させます。

```
$ source ~/.zshrc
```

```
$ gem install rails
```

こうすることで、

```
$ rails -v                                                                                                                                                                                        
Rails 6.0.3.4
``` 

whichコマンドでも参照しているパスを見てみます。

```
$which rails                                                                                                                                                                                        
/Users/ユーザー名/.rbenv/shims/rails
```

ちゃんとrbenv管理下のRailsを参照していますね。これでもう大丈夫です。
と、出てくれば、OKです。

ようやく、アプリを作成するコマンドを使います。

- dbがMySQLの場合

```
$ rails new アプリ名 -d mysql

もしくは、既にリポジトリがある場合だったら下記みたいにする

$ rails new . -d mysql
```

ここで、bundle installした時にmysql2がインストールできないエラーに当たるかもしれません。そんな時は、この記事の下にある「開発環境周りで使うであろう自分の備忘録Qiita記事」の所に貼ったリンクの記事をご覧ください。

```
$ bundle install
```

### 既存のアプリの場合
最初は恐らくbundle intallする為のbundleが無い可能性があるので、最初はgem installでbundlerを落としておきます。

```
$ gem install bundler

$ bundle install
```

下記のパスに移動して上げてgemのディレクトリにgemの中身が落ちてきていれば成功です。rubyのバージョンはそれぞれのrbenvでインストールしたものに合わせて、また、gemセットの名前は自分で作ったものでパスを打ってください。

```
$ cd .rbenv/versions/rbenvで落としたrubyバージョン/gemsets/gemセット/gems
```

## gemsetの削除

```
rbenv gemset delete 使われているRubyバージョン gemセットの名前

(ex:
rbenv gemset delete 2.6.0 gemgem-yes
=> deleted gemgem-yes from 2.6.0
```

## 開発環境周りで使うであろう自分の備忘録Qiita記事

[brewでインストールしたmysql8の初期化
](https://qiita.com/Nedward/items/ff58d65c4a3186c75171)

[mysql2がbundle installできない時の対処方法
](https://qiita.com/Nedward/items/766c6fd3188dc176e42d)