Rails5 開発環境構築、およびサーバ起動まで

## 動機
  
サーバ側の開発はたいてい VirtualBox で Ubuntu 入れた仮想環境でやっているが、この開発環境構築をやるときはやるけど、やらないときはとんとやらない。  
で、いざ新しく環境を作らなくてはとなった場合に、たまにしかやらないことは毎回調べないとできなくて、面倒だなっていう苦手意識があったので、まずは、同じようなことで詰まることがないように自分用の備忘録として記録しておきたいと思った。
    
## 前提
なるべく執筆時点で最新。  
必要があって古い何をかをいれることもあるけど...  
ひとまず ubuntu18.04 Desktop 版。  
  
# Ruby on Rails
インストールする環境
    
```
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
```
  
git がインストールされていなかったら  
  
```
$ sudo apt install git
```

まずは rbenv をインストールする  
  
```
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
```
  
そしたら `.bashrc` に以下を追記  

```
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
```
  
端末再起動、もしくは  

```
$ exec $SHELL -l
```
  
rbenv のバージョン確認　　

```
yokomichi@ubuntu18OnMacBook:~$ rbenv -v
rbenv 1.1.1-39-g59785f6
```
  
そしたら `ruby-build` のインストール  
  
```
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
```
  
ここまでできたら、それではいよいよ `ruby` のインストール  
  
```
$ rbenv install 2.5.0
```

エラーする可能性が...

```
Downloading ruby-2.5.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...

BUILD FAILED (Ubuntu 18.04 using ruby-build 20180822-12-g73fe30d)

Inspect or clean up the working tree at /tmp/ruby-build.20181012094110.2082
Results logged to /tmp/ruby-build.20181012094110.2082.log
```
  
エラーしたら下記をインストール  
  
```
$ sudo apt-get install gcc build-essential libssl-dev libreadline-dev zlib1g-dev
```  
  
すると...  
  
```
$ rbenv install 2.5.0
Downloading ruby-2.5.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...
Installed ruby-2.5.0 to /home/yokomichi/.rbenv/versions/2.5.0
```
  
インストールできたっぽい  
確認してみる  
  
```
$ rbenv versions
  2.5.0
```
  
イストールできてる
ここで作業用にディレクトリを作成して、作成したディレクトリに移動する  
  
```
$ mkdir rails_app
$ cd rails_app
```

使用する ruby のバージョンを指定する  
  
```
$ rbenv local 2.5.0
```
  
bundler を使いたいので  
  
```
$ sudo apt install ruby-bundler
```
  
gem を `vendor/bundle` に入れて `bundle exec` で呼び出すようにしたい    
  
```
$ bundle init
```
  
して生成された Gemfile を編集する  
とは言っても、rails のコメント外すだけ 
  
```
# frozen_string_literal: true

source "https://rubygems.org"

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

gem "rails"
```
  
これで準備 OK なので、以下のコマンドで rails をインストールする  
  
```
$ bundle install --path vendor/bundle
```
  
場合によっては `nokogiri` でこける可能性が...  
こけたら  
  
```
$ sudo apt install ruby-dev
```
  
してから再度  
  
```
$ bundle install --path vendor/bundle
```
  
`--path vendor/bundle` をつけることで `vendor/bundle` 以下に gem が格納される
  
いよいよを Rails プロジェクトを作成する  
  
```
$ bundle exec rails new . -B -d mysql
```
  
そして `bundle install` を実行  
  
```
An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2'` succeeds before bundling.
```
  
このようなエラーが出た場合は  
  
```
$ sudo apt install libmysqld-dev
```
  
してから、もう一度、`bundle install` を実行  

実行できたら、サーバを起動する  
  
```
$ bundle exec rails s
```
  
以下のようなエラーが出たら  
  
```
.
.
.
bin/rails:4:in `<main>'
Bundler Error Backtrace:
```
  
gem を追加する  
Gemfile に `gem 'therubyracer'` を追加して `bundle install` してから再度サーバを起動をする
  
```
$ rails s
=> Booting Puma
=> Rails 5.2.1 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.12.0 (ruby 2.5.0-p0), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop
```  
![スクリーンショット 2018-10-16 16.56.48.png](https://qiita-image-store.s3.amazonaws.com/0/268718/9f7e6017-1cc9-3253-a2d6-ed03a0a9bd03.png)  
  
<b> 起動した </b>
  
## 今後
これまできちんとしたメモ的なものを残しておく習慣がなかったため、不明点に遭遇する都度以前調べたことでもまたググったりして時間を無駄に費やすことが多かったので、一度調べたことはなるべく記録に残すことで無駄を省けるよう努力していこうと考えている。  
  
また同じようなことで困っている人がいたら力になれたらいいなと思い、調べたことを記事に書くことを習慣にできたら素敵かなと考えている。  
  
いいこと書いてあった ↓↓  
[エンジニアは全員技術記事を書くこと習慣化した方がいいぞ](https://qiita.com/HiromuMasuda0228/items/a71dea7ef4d77a30b118?utm_source=Qiita%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9&utm_campaign=cf8109ff79-Qiita_newsletter_332_10_10_2018&utm_medium=email&utm_term=0_e44feaa081-cf8109ff79-34188977)

<!--
当初は、開発環境をひとつつくるたびにそこそこ所要時間を要していたもののだいぶ短縮できるようになったが、Vagrant や Docker を使うと設定ファイルでさらに超簡単お手軽に開発環境を作成することができる  
  
がしかし、 Desktop 版仮想環境を Vagrant、Docker でどうやって作るのかがまだわかっていない、そもそも可能なのかどうかも含めてこれから時間を作って調べておきたい  
-->