Rails5.2をrails newしてrspecを導入するまで

Ruby Ruby on Rails

Railsを新しくnewしたあとにrspecをインストールして設定などを書き換え、rspecが実際に動くところまでをやってみたいと思います。
Rails5.2になってから少し手順が増えていたりするので参考にしていただければ幸いです。

rails newする

まずはnewしましょう。このとき自分が使うデータベースに合わせてdオプションを利用することでデータベースを選択出来ます。--skip-testまたは-Tオプションでテストを省略することが出来ます。
それでは実際にrails newをしましょう。

$ rails new application_name -d mysql -T

あとからTオプションを使用した場合の状態にするとき

もしrails newしたあとにTオプションを使っていないことに気づいた場合、そのプロジェクトを削除してもう一度newしたほうが早いのですが、場合によってはそれが出来ず、修正する必要がある場合もあるかと思います。そのときはまずtestsディレクトリを削除したあと、config/application.rbの部分を修正しましょう。

...省略
# require 'rails/all'の置き換え
# require 'rails/all' しているファイル群は railsレポジトリの rails/railties/lib/rails/all.rbに書いてある
require "rails"

require "active_record/railtie"
require "active_model/railtie"
require 'active_storage/engine'
require "action_controller/railtie"
require "action_view/railtie"
require "action_mailer/railtie"
require "active_job/railtie"
require "action_cable/engine"
# require "rails/test_unit/railtie"
require "sprockets/railtie"

Bundler.require(*Rails.groups)
...(省略)

Gemfileにrspecを追加

次にrspecをインストールします。Gemfileに以下を追加しましょう。

group :development, :test do
  gem 'rspec-rails', '~> 3.7'
end

追加出来たらbundle installを実行します。

$ bundle install

これでrspecを追加出来ました。

rspecの設定

rspecを追加したら忘れないうちに設定ファイルを作成しましょう。忘れやすいのでお早めに。

$ rails generate rspec:install
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb

これで設定ファイルが作成されました。最後にgeneratorsを設定しておきましょう。

Rails.application.config.generators do |g|
  g.javascripts false
  g.stylesheets false
  g.helper false
  g.jbuilder false
  g.test_framework :rspec,
    fixture: true,
    view_specs: false,
    helper_specs: false,
    routing_specs: false,
    controller_specs: true,
    request_specs: true
end

これでrails generate時に指定したファイルのみ作成されるようになります。

動作確認

最後にテストが実行されるかどうか確認しましょう。データベースを作成したあとにrspecを実行します。

$ bundle exec rake db:create
$ bundle exec rspec
No examples found.


Finished in 0.00044 seconds (files took 0.1446 seconds to load)
0 examples, 0 failures

上記のようにオールグリーンになったら正常に動いています。
お疲れ様でした!

参考文献