【初心者向け】anyenvでRailsの環境構築

**※Mac向けの記事です**

## Homebrewの代わりにanyenv
Ruby on Railsの公式チュートリアルでは[Homebrewを使った環境構築](http://railsgirls.jp/install)を紹介していましたが、
私はanyenv（※）を利用しているため、導入手順を調べて構築しました。
何度かエラーが出てハマったので、手順を丁寧に残しておきます。

> anyenv とは、ざっくり言うと、rbenv とか、nbenv とか複数バージョンをインストールできる **env 系をまとめて管理できるツール。

[Mac に anyenv でサクッとマルチ開発環境構築](https://qiita.com/yutackall/items/6c48cf56317d8501f6df)より引用

## 構築手順
参考：[Rails Girls インストール・レシピ](http://railsgirls.jp/install)
Homebrewを利用する場合は、上記URLの手順通りで構築できます。

### 前提
- MacOS
- Homebrewインストール済み（未インストールの場合より早く構築可能）

### Command line toolsをインストール
```
$ xcode-select --install
```
<font color="red">※"$"はコマンドに入力しないこと(以後省略)</font>

###Homebrewでインストールしたenv系をアンインストール

**Homebrewを導入していない方はスキップしてください。**
brewとanyenvが混在すると競合する可能性があるため、brewでインストールしたenv系を削除する。

```
$ brew uninstall rbenv
```

他のツールが依存していると削除できないこともあるので、envに依存しているツールを先に削除する。ディレクトリが残ってしまうので、同時に削除しておく。

```
$ rm -rf ~/.rbenv
```

### anyenvのインストール
#### Homebrew導入済み場合

```
$ brew install anyenv
$ anyenv init
# 実行後、ターミナルを再起動する
```

#### Homebrewを使わない場合

- GitHubのソースからインストール

```
$ git clone https://github.com/anyenv/anyenv ~/.anyenv
```

- パスを通す

[GitHubより引用](https://github.com/anyenv/anyenv)

```
#bashの場合
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile

#Ubuntu Desktopの場合
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc

#Zshの場合
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.zshrc

#Fishの場合
$ set -Ux fish_user_paths $HOME/.anyenv/bin $fish_user_paths

```

- セットアップしてターミナルを再起動

```
$ ~/.anyenv/bin/anyenv init
# 実行後、ターミナルを再起動する
```


### 各env系のインストール

- 今回はnodenv, rbenvを導入する。

```
$ anyenv install nodenv
$ anyenv install rbenv
```

#### 各種の安定版のバージョンを確認

- Ruby
https://www.ruby-lang.org/ja/
- node
http://nodejs.jp/

```
$ nodenv version
$ rbenv version

# rehashしておく(gem)
$ nodenv rehash
$ rbenv rehash
```

私の場合は下記の通りになりました

```
$ rbenv version
2.6.3 (set by /Users/******/.anyenv/envs/rbenv/version)

$ nodenv version
12.1.0 (set by /Users/******/.anyenv/envs/nodenv/version)
```

### bundlerのインストール

#### bundlerがインストールされているか確認

```
$ bundle -v
# 私の場合は以下のように出力された
Bundler version 2.0.2

# インストールを確認したらアップデートする
$ gem update bundler
```

#### インストールされていなかった場合

bundleをインストールする

```
$ gem install bundler
$ bundle -v
```

### Railsのインストール

#### 作業ディレクトリ作成

```
# フォルダをカレントディレクトリに作成
$ mkdir rails_sample(フォルダ名)

# 作成したフォルダに移動
$ cd ~/rails_sample
```

<font color="red">cd /rails_sampleで移動するのを忘れるのに注意</font>（忘れるとrails server実行時にエラーが出ます）

### Gemfileの作成
これを忘れるとrailsファイル作成時に「.gemがありません」というエラーが出ます。

```
# ~/rails_sample配下にて
$ bundle init
```

- Gemfileを編集する

```
# Gemfile編集モードに入る
$ vi Gemfile

# 編集モードに切り替わるので, iを押下してカーソルの左から入力開始(i: Insert の意味)
# #gem "rails" をコメント解除（#を削除）して以下のようにする

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails"
```

### Railsのインストール

```
# 念の為アップデートしておく
$ sudo gem update --system

# railsをインストール
$ bundle install --path=vendor/bundle

# railsのバージョンを確認
$ bundle exec rails -v
Rails 5.2.3

# rehashしておく(railsコマンドを使えるようにする)
$ rbenv rehash
```

```
# sampleフォルダにrailsアプリフォルダ(app)を作成
~/rails_sample
$ bundle exec rails new app
      create
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  Gemfile
      (以下略)
```

### rails serverを起動する

```
# ディレクトリ移動（作成したappフォルダへ）
$ cd /app

# サーバー起動
$ rails server
```
ここで起動したら完了です🎉


#### <font color="red">Rails is not currently installed on this system.</red>

上記のメッセージが出た場合、指示に従います。

```
Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.

$ sudo gem install rails
# パスワードを要求されたら入力する

~/rails_sample/app
$ rails server
```

## Yay! You're on Rails!
http://localhost:3000/ へアクセスするとRailsの画面が表示されます🎉

<img width="692" alt="スクリーンショット 2019-06-20 15.19.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269379/a2e4dd00-8aff-b2ea-468c-4f4e60add60c.png">

## rails server が起動しない😣
私がハマったパターンの解決策です。以下を試してみてください。
（上記手順にあった `$rbenv rehash` を忘れたがために発生したものと思われます）

```
# 各envのバージョン確認
~/sample_rails
$ anyenv version
nodenv: 12.1.0 (set by /Users/******/.anyenv/envs/nodenv/version)
rbenv: 2.6.3 (set by /Users/******/.anyenv/envs/rbenv/version)

# 現在の環境で動いているrbenvのバージョン確認(*が付いてるもの)
$ rbenv versions
  system
* 2.6.3 (set by /Users/******/.anyenv/envs/rbenv/version)

# rehashしておく
$ rbenv rehash

# 念の為railsを再インストール
$ sudo gem install rails

# railsのバージョンを確認
$ rails -v
Rails 5.2.3

# インストールを確認したのでディレクトリ移動
~/sample_rails
$ cd /app

# server起動
~/sample_rails/app
$ rails server
```

私の場合はrailsを何度インストールしても
**Rails is not currently installed on this system.** が表示されましたが、上記の方法で解決できました。

参考になれば嬉しいです。


## 参考
参考にさせていただきました🙏

- [Ruby初学者のRuby On Rails 環境構築【Mac】](https://qiita.com/TAByasu/items/47c6cfbeeafad39eda07)
- [MacOSX上でRuby on Rails環境を構築する。](https://qiita.com/budougumi0617/items/45658123196c3dde80ee)
- [rbenv rehashは何をやっているのか？](http://dqn.sakusakutto.jp/2014/02/rbenv_rehash_what_it_does.html)
- [Ruby on Rails をインストールしようとして gem install rails --no--ri --no-rdoc したら invalid option: --no--ri](https://teratail.com/questions/151110)