Rails
RSpec
Docker

Dockerではじめる『Everyday Rails - RSpecによるRailsテスト入門』


概要

Railsチュートリアルも完了し、さて次は何をしようかと思案していたところ、

『Everyday Rails - RSpecによるRailsテスト入門』がゴールデンウィークセール中でしたので、これはと思い購入。

Everyday Rails… Aaron Sumner 著 et al. [Leanpub PDF/iPad/Kindle]

Railsチュートリアルに引きづつき、Dockerで環境を構築。


環境

PC:MacBookPro

docker for mac


環境構築


RSpec用のコンテナ準備

まずは、ターミナルで適当なフォルダを作成して、カレントディレクトリに移動。

mkdir myRspec && cd $_

続いてDockerコンテナを起動。

$ docker container run -it --name myRspec -p 3000:3000 -v `pwd`:/myapp  ruby:2.4.6 /bin/bash

内容について軽く補足

* -it  : 標準入出力を繋げる。要するにターミナルで起動したコンテナを操作できるようにする。

* --name  : 名前付け。あるとわかりやすい。

* -p 3000:3000 : ホストとなるOSとDockerイメージのポートを繋げる。

* -v `pwd`:/myapp : ホストのカレントディレクトリと、Dockerのmyappディレクトリを同期させる。

  (同時にコンテナ内のルート直下にmyappディレクトリも作成される)

* ruby:2.4.6 : 引っ張ってくるDocker Image。サンプルアプリはRuby2.4なので今回はタグで2.4.6を指定。

* /bin/bash :実行するコマンド。

ターミナルの最初の部分がUSERnoMacBook-Pro:~からroot@:(12文字の英数字)に変わっていたら成功。

そのまま、次のコマンドを実行。

$ apt update

$ apt install -y nodejs


Githubからサンプルアプリケーションをクローン

サンプルアプリケーションはGitHubにあります。

https://github.com/everydayrails/everydayrails-rspec-2017

クローンの手順はやったことがなかったので、ググりながら進めます。

$ git clone https://github.com/everydayrails/everydayrails-rspec-2017.git

everydayrails-rspec-2017というディレクトが作成され、コードが取得できました。

まずはcd everydayrails-rspec-2017/でディレクトリに移動。

この状態では、Masterブランチのみ取得している状態です。

ここから2章開始の状態にするために、本文に従ってブランチを切り替えます。

$ git checkout -b my-02-setup origin/01-untested

これで、ソースコードの準備が整いました。先述の通り、ホストの myRspecディレクトリはmyappディレクトリと同期しています。

ホストPCのmyRspec下のeverydayrails-rspec-2017をVSCodeでひらけば、そのまま開発環境として利用できます。

ただし、Railsコマンドの実行などは、Dockerコンテナを動かしているターミナルからでないと使えません。


仕上げ

ターミナルで最後の仕上げです。

$ bundle install

$ bin/rails db:create:all
$ bin/rails db:migrate RAILS_ENV=development

これで準備完了のはずです。ターミナルにrails sと入力し、ブラウザからhttp://localhost:3000/に接続してみます。

スクリーンショット 2019-05-06 12.49.52.png

問題なく動いているようですね。それでは勉強開始!


参考