VagrantのUbuntu 18 上にRubyとRuby on Railsをインストールして起動する

Railsの挙動を気軽に試せる環境が欲しいと思って、手元の仮想環境にRailsをインストールしようしたら、思った以上にハマったので備忘のため、メモを残しておきます。

## インストールする環境

Ubuntu 18.04.3 を使います。
ちなみにvagrantのhashicorp/bionic64 のboxを使ってます。
パッケージは最新化してます。

```:Ubuntuのバージョン
$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
```

## rbenvをインストールする
[Progate](https://prog-8.com/docs/ruby-env)を見るとRubyの開発環境を構築する際はrbenvを用いてインストールすることが一般的とのことです。
rbenvを用いると簡単にrubyのバージョンをスイッチできるためとのこと。

一般ユーザでrbenvをインストールするとインストールしたユーザでしかrbenvやRubyを実行をできなさそうででどのユーザでも実行できるようにしたいのでサーバ全体インストールします。
※実際はユーザにインストールするか主流なのか、サーバ全体にインストールするのが主流なのかは知りたいところ

### rbenvに必要なパッケージをインストールする
[こちらのwiki](https://github.com/rbenv/ruby-build/wiki)を参考にしてインストールします。

```
$ sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'libreadline-dev' instead of 'libreadline6-dev'
E: Unable to locate package libgdbm6
```
libgdbm6のパッケージが見つからないと怒られました。

[さっきのwiki](https://github.com/rbenv/ruby-build/wiki)をよくみたら

```
# Depending on your version of Ubuntu/Debian/Mint, libgdbm6 won't be available.
# In that case, try an earlier version such as libgdbm5.
apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev
```

Ubuntsによってはlibgdbm6が利用できないから、libgdbm5を使ってねと。
※注意書きはしっかり読みましょう。
ということで、以下のように書き換えて再度トライ

```
$ sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev libdb-dev
```

次はうまく行きました。出力は長かったので割愛します。


### rbenvをインストール
必要なパッケージをインストールしていきます。

```
$ sudo git clone https://github.com/rbenv/rbenv.git /usr/local/rbenv

$ sudo git clone https://github.com/rbenv/ruby-build.git /usr/local/rbenv/plugins/ruby-build

$ sudo git clone https://github.com/rbenv/rbenv-default-gems.git /usr/local/rbenv/plugins/rbenv-default-gems
sudo sh -c "echo bundler >> /usr/local/rbenv/default-gems"
```

bashで使えるようにします。
```
$ sudo vim /etc/profile.d/rbenv.sh
```

```:rbenv.sh
export RBENV_ROOT=/usr/local/rbenv
export PATH="$RBENV_ROOT/bin:$PATH"
eval "$(rbenv init -)"
```

##rubyをインストール
rubyの2.6.6　をインスールします。

```
# rbenv install 2.6.6
```

バージョンを確認します。

```
# ruby -v
rbenv: ruby: command not found

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

rubyのコマンドがないと怒られました。
どうも rbenv でバージョンを指定しないといけないらしい

```
# rbenv global 2.6.6
# rbenv rehash
# ruby -v
ruby 2.6.6p146 (2020-03-31 revision 67876) [x86_64-linux]
```

rubyのコマンドが打てるところまで確認

##Ruby on Railsをインストール

必要なミドルウェアをインストール
SQLite、nodejs、yarnをインストール
※nodejs と　yarn　をそのままaptで入れるとrailsが必要なバージョンが入れられないので以下方法でインストール

```
$ sudo apt install sqlite3 libsqlite3-dev
$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
$ sudo apt-get update && sudo apt-get install yarn
```

アプリを作成

```
rails new blog
```

railsサーバを起動（仮想サーバに起動しているのでIPを指定）

```
$ rails s -b xxx.xxx.xxx.xxx
```

IブラウザでIPを指定してアクセス
http://xxx.xxx.xxx.xxx:3000/
でブラウザにアクセスしたら、railsの画面が表示されました。


##参考

rbenvの必要パッケージ:https://github.com/rbenv/ruby-build/wiki
rbenvをインストールした時の参考
https://gist.github.com/berga/913c4156064dfdd22d913304bc854033
https://loumo.jp/archives/21101

nodejsのインストール方法:https://github.com/nodesource/distributions
yarnのインストール方法:https://qiita.com/guuuuuchan/items/08f71e6e5bc83432df21