Railsの開発環境を整える①

※2016年10月に別のブログに書いたものを移行した記事です

---

新人SEである私が考えたベスト・プラクティスを実践してみるのが、今回のテーマです。
環境構築編では、環境を整えるところまで行います。

## 仮想開発環境を整える
開発PCのOSはWindowsかMacで、サーバーのOSはLinuxというのはよくある話だと思います。そのまま開発を行うと、開発環境と本番環境が異なり、不具合が起きてしまいます。それを防ぐために、仮想開発環境を使います。

WindowsやMacのPC上に、VirtualBoxやVMWareなどの仮想マシンをいれ、その上にCentOSなどをインストールします。開発中のアプリケーションはCentOSで動かしつつ、WindowsやMacのエディタで開発を行う、ということが可能になります。

仮想環境の構築については、[Vagrant + Virtualboxで仮想環境構築 | イチとゼロ - mokuoの技術ブログ](http://mokuo.yokohama/vagrant-virtualbox/)を御覧ください。

今回は、CentOS7を使いたいと思います。

### yumアップデート
仮想OSにログインしたら、yumは最初にアップデートしておきましょう。
```
$ sudo yum -y update
$ sudo reboot
```

### 言語設定
現在の言語設定を確認
```
$ localectl status
   System Locale: LANG=de_DE.UTF-8
       VC Keymap: de
      X11 Layout: de
```
設定できる言語を確認し、英語(UTF-8)に設定
```
$ localectl list-locales | grep en
$ sudo localectl set-locale LANG=en_US.utf8
```
英語になった。
```
$ localectl status
   System Locale: LANG=en_US.utf8
       VC Keymap: de
      X11 Layout: de
```
反映するには、仮想マシンを再起動する必要がある。

## Rubyのインストール
Rubyのパッケージマネージャーである、rbenvを使います。
rbenvを利用することで、Rubyのバージョンを簡単に切り替えることができます。

### gitコマンドをインストール
まず、gitコマンドをインストールしておきます。
```
$ sudo yum -y install git
```

### rbenvのインストール
rbenvのソースを、GitHubからチェックアウトする
```
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
Cloning into '/home/vagrant/.rbenv'...
remote: Counting objects: 2542, done.
remote: Total 2542 (delta 0), reused 0 (delta 0), pack-reused 2542
Receiving objects: 100% (2542/2542), 461.53 KiB | 263.00 KiB/s, done.
Resolving deltas: 100% (1597/1597), done.
```
パスを通す
```
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
```
設定を反映
```
$ source ~/.bash_profile
```
rbenvが使える状態になっているか確認
```
$ rbenv --version
rbenv 1.0.0-33-gc7dcaf1
```

### ruby-buildのインストール
rbenvでRubyをスムーズにインストールするために、ruby-buildをインストールする。
```
$ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Cloning into '/home/vagrant/.rbenv/plugins/ruby-build'...
remote: Counting objects: 6981, done.
remote: Total 6981 (delta 0), reused 0 (delta 0), pack-reused 6981
Receiving objects: 100% (6981/6981), 1.35 MiB | 322.00 KiB/s, done.
Resolving deltas: 100% (4151/4151), done.
```
rbenvでインストール可能なバージョンを確認する。
```
$ rbenv install -l
```
バージョンを指定してインストールする。今回は、2.3.0を指定。
```
$ rbenv install 2.3.0
Downloading ruby-2.3.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.bz2
Installing ruby-2.3.0...
Installed ruby-2.3.0 to /home/vagrant/.rbenv/versions/2.3.0
```
インストールされたか確認
```
$ rbenv versions
\* system (set by /home/vagrant/.rbenv/version)
  2.3.0
```
インストールしたバージョンを使用するように切り替える
```
$ rbenv rehash
$ rbenv global 2.3.0
```
Rubyのバージョンが変わったか確認
```
ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
```
もしくは、
```
$ rbenv version
2.3.0 (set by /home/vagrant/.rbenv/version)
```

**参考サイト・文献**

* [rbenv/rbenv: Groom your app’s Ruby environment](https://github.com/rbenv/rbenv)
* [Ruby を使うなら「rbenv」で複数バージョンを切り替えられるようにしておこう - HAM MEDIA MEMO](https://h2ham.net/ruby-rbenv)
* [たのしいRuby 第5版](https://www.amazon.co.jp/gp/product/4797386290/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4797386290&linkCode=as2&tag=mokuo-22)![](http://ir-jp.amazon-adsystem.com/e/ir?t=mokuo-22&l=as2&o=9&a=4797386290)
* [rbenv/ruby-build: Compile and install Ruby](https://github.com/rbenv/ruby-build)

<iframe src="https://rcm-fe.amazon-adsystem.com/e/cm?t=mokuo-22&o=9&p=8&l=as1&asins=4797386290&ref=qf_sp_asin_til&fc1=000000&IS2=1&lt1=_blank&m=amazon&lc1=0000FF&bc1=000000&bg1=FFFFFF&f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

### Rubyの環境でBoxファイルを作成しておく
今後使用するかもしれないので、Rubyの環境までで、一旦Boxファイルを作成しておく。
```
$ vagrant status
Current machine states:

default                   poweroff (virtualbox)

The VM is powered off. To restart the VM, simply run `vagrant up`

$ vagrant package default --output centos72-ruby231.box
```

## Railsのインストール
Rubyに特化したパッケージマネージャーである、RubyGemsを使って、Railsをインストールする

### RubyGemsをアップデート
```
$ gem -v
2.5.1
$ gem update --system
$ gem -v
2.6.7
```

### Railsをgemでインストール
```
$ gem install rails
$ rails -v
Rails 5.0.0.1
```

## MariaDBのインストール
今回は、データベースにMariaDBを使用する。

### yumレポジトリを追加する。
下記サイトから、OSなどを選択するだけで、repoファイルの中身を作成してくれる。
[MariaDB - Setting up MariaDB Repositories - MariaDB](https://downloads.mariadb.org/mariadb/repositories/#mirror=yamagata-university)

![MariaDB-Setting-up-MariaDB-Repositories-MariaDB-1024x569.png](https://qiita-image-store.s3.amazonaws.com/0/102964/493ef925-cd0c-72fd-d3c1-ccd39676aa1c.png)


MariaDB.repoファイルを作り、中身を貼り付ける。
```
$ cd /etc/yum.repos.d/
$ sudo vim MariaDB.repo
```

### yumでMariaDBをインストール
```
$ sudo yum -y install MariaDB-server MariaDB-client MariaDB-devel
```

### MariaDBの自動起動を設定
```
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
$ systemctl list-unit-files | grep mariadb
mariadb.service                             enabled
```

**参考サイト**

* [yum による MariaDB のインストール - MariaDB Knowledge Base](https://mariadb.com/kb/ja/yum/)
* [How To Install MySQL / MariaDB on CentOS 7 | Liquid Web Knowledge Base](http://www.liquidweb.com/kb/how-to-install-mysql-mariadb-on-centos-7/)

## Railsの環境でBoxファイルを作成しておく
今後使用するかもしれないので、Railsの環境までで、一旦Boxファイルを作成しておく。
Vagrantfileがあるディレクトリで
```
$ vagrant package default --output centos72-rails5-mariadb.box
```

## Railsアプリケーションの作成
ホストOSのテキストエディタで開発する場合は、共有フォルダの中につくる
今回は、テストフレームワークとしてRSpecを使うので、Test::Unitをスキップする。
また、DBにMySQLを指定。
```
$ cd data/
$ rails new gtd_console -d mysql -T
```

## 必要なGemパッケージをインストールする
作成したRailsアプリケーションの中に、Gemfileができている。
Gemfileの以下の箇所の、コメントアウトを外します。
```
\# gem 'therubyracer', platforms: :ruby
\# gem 'bcrypt', '~> 3.1.7'
```
必要なGemパッケージは、[RubyGems.org | your community gem host](https://rubygems.org/)で検索することができる。
今回は、Gemfileに以下を追加。MariaDBを使うので、mysql2も記述する。
```
gem 'mysql2', '>= 0.3.18', '< 0.5'
gem 'i18n', '~> 0.7.0'
```
テスト用のGemパッケージ
```

```
Gemfileに書いたパッケージをインストール
```
$ bin/bundle install
```

ここまでで、環境が整いました。
開発編では、実際にRailsアプリケーションを作成し、開発を進めて行きたいと思います。