LoginSignup
19
21

More than 5 years have passed since last update.

今頃「The RSpec Book」の第19章(Railsのテスト)以降を試すには

Last updated at Posted at 2013-07-01

はじめに

RubyにおけるBDDを学ぶにあたり、今でも貴重な情報源である書籍「The RSpec Book」ですが、Rails 3.0.0前提の内容になっています。
今やRailsは4.0までリリースされていますが、Rails3との差異はかなり大きなものです。

この本の内容を、Rails4.0.x及び最新バージョンのRSpec/Cucumberで実践するのは、おそらくエラーが大量発生することが予想され、さすがに無理があります。

なので、おとなしく本の最初で示されている各種gemのバージョンそのままのものを使うことが賢明です。
本の内容を滞り無く進めて大筋を理解してから、次にRails、RSpec、Cucumberの最新バージョンを学びましょう。

しかし、ちょっとした問題が……

Rails 3.0.0 がインストールできない

ここでは、Rubyは1.8.7を使う事を前提とします。Rubyの導入に関しては、以前私が書いたこの記事をご覧下さい。

まずは、bundlerをインストールする必要があるのですが、今普通に

$ rbenv exec gem install bundler

とすると、バージョン1.3.2以降がインストールされてしまいます。このバージョンのbundlerはバージョンが新しすぎて、Rails3.0.0をインストールできません(エラーが起きます)。
そこで、以下のようにしてバージョン1.0.22をインストールします。

$ rbenv exec gem install bundler --version "= 1.0.22"

その上で、この記事を参考に、Rails3.0.0をローカルインストールしましょう。

Rails3.0.0プロジェクトのGemのインストールに失敗する

第19章 p. 276で、Gemfileの内容が示されているのですが、このままだとBundlerがRakeやRSpec、Cucumber、依存関係で必要なnokogiriなどについて、最新バージョンをインストールしようとしてしまい、エラーが発生します。
そこで、古いバージョンを指定する必要があります。
私の方で検証済みのGemfileを以下に示しますので、この通りにやってください。

source 'http://rubygems.org'

gem 'rails', '3.0.0'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'sqlite3-ruby', :require => 'sqlite3'

gem 'rake', '= 0.8.7'

group :development, :test do
  gem "rspec", "= 2.0.0"
  gem "rspec-rails", "= 2.0.0"
  gem 'nokogiri', '= 1.5.10'
  gem "cucumber", "= 0.9.2"
  gem "cucumber-rails", "= 0.3.2"
  gem "webrat", "= 0.7.2"
  gem "database_cleaner", "= 0.5.2"
end

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug'

# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'

# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
# group :development, :test do
#   gem 'webrat'
# end

以上。あとは本の内容を進めて行きましょう。Good Luck!

その他、気になったこと

いまさらWebrat?

21章では、Webratを使った、ブラウザシミュレート型のテストについて書かれています。capybara全盛の時代に今更Webrat? とも思ったのですが、調べてみるとcapybaraはWebratからインスパイアされており、多くの関数で後方互換性があるとのことです。
なので、この本でWebratを使って学んだテスト作法は、おそらく将来capybaraを使う際にも活かせると思います。

19
21
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
19
21