give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

【2019年10月版】「Everyday Rails - RSpecによるRailsテスト入門」のセットアップ解説動画を作成しました

はじめに

僕が翻訳者として参加している電子書籍「Everyday Rails - RSpecによるRailsテスト入門」は2014年の日本語版発売以来、現在まで随時内容をアップデートを繰り返しています。
今の内容も十分実用性があるのですが、使用しているライブラリのバージョンが若干古くなっているせいか、ときどきネット上で「サンプルアプリのセットアップがうまくいかない」というコメントを見かけたりします。

そこで僕が実際にゼロからサンプルアプリをセットアップする動画を作成してYouTubeにアップしてみました。

今回作成した動画はこちら

今回作成した動画はこちらです。再生時間は約18分です。

【2019年10月版】「Everyday Rails - RSpecによるRailsテスト入門」の環境作成手順

動画の内容

この動画ではGitHubからサンプルアプリをクローンして、サンプルアプリが起動することと、masterブランチのテストがすべてパスするまでの手順を説明しています。
実行環境はGitHubのこのコミット(8b3800f)時点のコード、および本書の2019-10-01版の内容にあわせて次のようになっています。

  • Rails 5.1.1
  • RSpec 3.8.0(書籍の中では3.6.0が使われていますが、大きな違いはありません)
  • Ruby 2.4.9 (2019年10月14日時点のRuby 2.4系の最新版)

ただし、この動画では以下の内容は説明していません。

  • rbenvのセットアップ
  • gitのセットアップ
  • Chromeのインストール

また、対象となる実行環境はmacOSです。(具体的にはmacOSX Mojave 10.14.6)

ざっくりとした手順

というわけで、具体的な手順については動画を見てやってください!・・・で終わってもいいのですが、動画を見る時間がない、という人のために簡単に手順を紹介しておきます。

# GitHubからコードをクローン
git clone git@github.com:everydayrails/everydayrails-rspec-2017.git

# ディレクトリを移動
cd everydayrails-rspec-2017

# 実行環境をRuby 2.4系に設定(2.4系のRubyを事前にインストールしておく)
rbenv local 2.4.9

# Bundlerのインストール(まだインストールしていない場合)
gem install bundler

# gemのインストール
bundle install

# マイグレーション実行
rails db:migrate

# サーバーを起動して動作確認(最初はSign up画面にてユーザーを作成)
rails s

# テストが全部パスすることを確認
bin/rspec 

動画の中でもお話ししたとおり、僕が今回試した手順では特に大きなトラブルもなく、テストが全部パスするところまで実行できました。

2021-3-27 追記

mimemagic gemの過去のバージョンが削除(yank)されてしまった関係で、bundle installすると以下のようなエラーが出る場合があります(参考記事)。

Your bundle is locked to mimemagic (0.3.2), but that version could not be found in any of the sources listed in your Gemfile. If you haven't changed sources,
that means the author of mimemagic (0.3.2) has removed it. You'll need to update your bundle to a different version of mimemagic (0.3.2) that hasn't been
removed in order to install.

このエラーが出た場合はbundle installの代わりにbundle update mimemagicを実行するとgemのインストールができるはずです。

bundle update mimemagic

ただし、gemのインストールが成功しても以下のようなエラーが出る場合があります。

Failures:

  1) Tasks user toggles a task
     Got 0 failures and 2 other errors:

     1.1) Failure/Error: visit root_path
          
          Selenium::WebDriver::Error::SessionNotCreatedError:
            session not created: This version of ChromeDriver only supports Chrome version 90
            Current browser version is 89.0.4389.90 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

この場合はGemfileを開き、"chromedriver-helper"を"webdrivers"に置き換えてください。

 group :test do
   gem 'capybara', '~> 2.15.4'
   gem 'selenium-webdriver'
-  gem 'chromedriver-helper'
+  gem 'webdrivers'
   # Or use poltergeist and PhantomJS as an alternative to Selenium/Chrome
   # gem 'poltergeist', '~> 1.15.0'
   gem 'launchy', '~> 2.4.3'

さらに、"selenium-webdriver"も一緒にアップデートした方が良いので、Gemfileを保存したらbundle update selenium-webdriverを実行してください。

bundle update selenium-webdriver

僕の環境ではこれで全テストがパスしました。

(参考:動作確認した実行環境)

  • MacBook Pro (13-inch, M1, 2020)
  • macOs BigSur 11.2.3
  • Ruby 2.4.10 (rbenvでインストール)
  • Chrome 89.0.4389.90 (Official Build) (arm64)

Cloud9で動かしたい場合

Cloud9で実行したい人は以下の動画が参考になるかもしれません。

【2019年7月版】Cloud9上でEveryday Railsの`js: true`付きのフィーチャスペックを実行する手順

Qiitaに書いた以下の記事もあわせてご覧ください。

qiita.com

お願い:質問は「みんなが見える場所」で!

この動画を見てもうまく動かない!という場合は、僕の方でできるかぎりサポートします。
ただし、その場合はTeratailやStackOverflowなど、「みんなが見える場所」で質問するようにしてください。(DMでの技術的な質問は基本的にNGです)
その上でTwitter等で「ここに質問を書いたので見てください」とメンションをもらえれば、何らかのコメントを返すようにします。

なぜ「みんなが見える場所」での質問をお願いするのかという理由については以下のエントリにまとめてあるので、こちらも参考にどうぞ。
blog.jnito.com

まとめ

というわけで、このエントリではYouTubeに公開した「Everyday Rails - RSpecによるRailsテスト入門」のセットアップ解説動画について紹介しました。
もし「Everyday Railsを買ったけど、セットアップがうまくいかなくて困っている」という人がいたら、ぜひこの動画を参考にしてみてください!

【2019年10月版】「Everyday Rails - RSpecによるRailsテスト入門」の環境作成手順

あわせて読みたい

さらに、このサンプルアプリケーションをRails 6にアップデートしたときに発生するテストコードの変更点についてもブログにまとめました。
こちらも動画付きです。よかったら参考にしてみてください。

blog.jnito.com

「Everyday Rails - RSpecによるRailsテスト入門」について

「Everyday Rails - RSpecによるRailsテスト入門」はその名の通り、RailsアプリケーションをRSpecを使ってテストする方法を解説した電子書籍です。
難易度的には「RailsやRubyがある程度わかっている人であればOK、RSpecの知識はゼロでも大丈夫」というレベルになっています。

内容の詳細や購入方法等については以下のエントリにまとめてあるので、こちらを参考にしてください。
blog.jnito.com

ご購入は以下のサイトからどうぞ。
Everyday Rails - RSpecによるRailsテスト入門 - Leanpub
f:id:JunichiIto:20190424050314p:plain