Ruby及びRuby on Rails5の環境構築メモ

Macへのruby及びrailsの環境構築をしたときのメモ。

※2018/2/5 CentOSに導入する手順を追記

# Macへの導入手順
## rbenvとruby-buildをインストール
rubyバージョン管理ソフトのrbenvをインストール。

```bash:rbenv導入
brew install rbenv
vi ~/.zshrc # zshrcを編集

# 下記を追記
export RBENV_ROOT=/usr/local/var/rbenv
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

source ~/.zshrc # 設定を反映

rbenv -v # バージョン確認
> rbenv 0.4.0
```

rubyの導入には`rbenv install`コマンドが必要。このために`ruby-build`プラグインを導入する。また、最新バージョンのrubyを導入するためrbenvのアップデートも同時に行う

```bash:ruby-build導入
brew install ruby-build

# 一旦動作確認でrubyのバージョン一覧を表示する
rbenv install -l
# ruby-buildをupgrade
brew update
brew upgrade ruby-build # ※xcodeがないと言われたら下記を参考にし、xcodeを導入する

# 再びバージョンリストを取得
rbenv install -l
# バージョンを指定してインストール
rbenv install 2.4.3
```
```bash:【参考】xcodeの導入
~$ brew upgrade ruby-build
==> Downloading https://homebrew.bintray.com/bottles-portable/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
Already downloaded: /Users/ogyu/Library/Caches/Homebrew/portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
==> Pouring portable-ruby-2.3.3.leopard_64.bottle.1.tar.gz
Updating Homebrew...
Error: Xcode alone is not sufficient on Yosemite.
Install the Command Line Tools:
  xcode-select --install

## 指示に従いxcodeのインストール
xcode-select --install
```

## rbenvによるrubyバージョン切り替え

```bash:
rbenv versions
> *system
>  2.4.3

rbenv global 2.4.3 # バージョン切り替え

# ログインしなおしてバージョン再確認
ruby -v
> ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin14]
```
## ruby gemのアップデート
```bash
gem -v
> 2.7.3
gem update --system
gem -v
> 2.7.4
```

## Rails稼働に必要な依存ライブラリのインストール
node.js、sqlliteを事前に導入しておく。

まずはnode.jsの環境から。
node.jsバージョン管理ツールのnodebrewをインストールしてから本体を導入する流れとなる。

```bash:node.jsの環境構築
brew install nodebrew
nodebrew help # 動作確認
nodebrew setup

Fetching nodebrew...
Installed nodebrew in $HOME/.nodebrew

========================================
Export a path to nodebrew:

export PATH=$HOME/.nodebrew/current/bin:$PATH
========================================

# 上記のメッセージが出るのでパスを通す
vi ~/.zshrc
source ~/.zshrc
# ログインしなおして動作確認
nodebrew help

nodebrew list-remote # node.jsのバージョン一覧を取得
nodebrew install-binary v8.9.3 # 安定版のバージョンをインストール
nodebrew list # インストールリストを表示
> v8.9.3
> current: none
nodebrew use v8.9.3 # 使用バージョンの選択
nodebrew list # currentが変更されていることを確認
> v8.9.3
> current: v8.9.3

# node.jsとnpmのバージョン確認
node -v
> v8.9.3
npm -v
> 5.5.1

# npmの初期化
npm init
# とりあえず全てEnterでOK
# ホームディレクトリにpackage.jsonができていることを確認する
```

次にsqliteを導入する。こちらは簡単。

```bash:sqlite導入
brew install sqlite3
gem install sqlite3 # sqlite3ドライバのインストール
```

## Railsのインストール
gemでインストールできる。`-v`でバージョンを指定する。

```
gem install rails -v 5.0.4
rails -v
> 5.0.4
```

# CentOS7への環境構築手順
gitの導入が前提となるので、下記を参考に導入しておく。
CentOS7に最新版のgitを導入してみた](https://qiita.com/kod314/items/2a0b30ded6063f389771)

## rbenvの導入
【参考】
[rbenv公式git](https://github.com/rbenv/rbenv)


```bash:rbenv
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
~/.rbenv/bin/rbenv init
# 下記が表示されるので~/.bash_profileに追記
# eval “$(pyenv init -)”
source ~/.bash_profile
rbenv -v
# >rbenv 1.1.1-28-gb943955
```

## ruby-buildの導入

```bash:ruby-build
git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
cd ~/.rbenv/plugins/ruby-build
sudo ./install.sh
ruby-build --version
# > ruby-build 20171226
```

## rubyの導入
```
rbenv install -l # rubyのバージョン一覧表示
rbenv install 2.5.0
```

インストール時に下記のようなエラーが出た。エラーログに記載の通り`yum install -y readline-devel`をしたら依存関係が解決できた。

```bash:エラー内容
BUILD FAILED (CentOS Linux 7 using ruby-build 20171226-3-g01e7b7b)

Inspect or clean up the working tree at /tmp/ruby-build.20180206225916.7091
Results logged to /tmp/ruby-build.20180206225916.7091.log

Last 10 log lines:
installing rdoc:                    /home/ogyu/.rbenv/versions/2.5.0/share/ri/2.5.0/system
installing capi-docs:               /home/ogyu/.rbenv/versions/2.5.0/share/doc/ruby
The Ruby readline extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `yum install -y readline-devel` to fetch missing dependencies.
```


あとはMacの導入手順と同様。
と思ったら、railsの起動までが以外とトラップだらけだったのでメモしておく。
下記の記事が参考になりました。ありがとうございます！
[【CentOS7(+Ubuntu16)】Ruby / Rails のインストールから Rails サーバの起動までの(ほぼ)完全ガイド](https://qiita.com/noraworld/items/d92cca9bb449b48a97aa)

備忘のためにコマンドを要約すると下記のようになる。

```bash:トラップ回避要約
# rails newでプロジェクトを作成しようとするとsqliteがないと怒られるため導入する
sudo yum -y install sqlite-devel
gem install sqlite3 -v '1.3.13'

# railsプロジェクトの作成
rails new myapp

# Gemfileの下記をコメントアウトを消して、JavaScript Runtimeを使用できるできるようにする
gem 'therubyracer', platforms: :ruby

rails s # サーバ起動
```