LoginSignup
10
8

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-05-06

概要

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

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

参考

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8