gem を複数バージョンでテストするため、appraisal を使ってみる
Ruby Ruby on Rails
Published: 2020-07-12

やったこと

例えば、ある gem で複数の Rails で動かすために、 複数バージョンでテスト (rspec) を実行したいとします。

そんな時に、この gem を使います。

今回は、下記でテスト (rspec) を実行できるようにします。

  • Rails 5.1.0
  • Rails 5.2.3
  • Rails 6.0.0

確認環境

$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]

$ rails --version
Rails 5.2.3

調査

Github にある通りにセットアップしていきます。

Appraisals ファイルの準備

Appraisals

appraise "rails-5.1.0" do
  gem "rails", "5.1.0"
end

appraise "rails-5.2.3" do
  gem "rails", "5.2.3"
end

appraise "rails-6.0.0" do
  gem "rails", "6.0.0"
  gem "sqlite3", "~> 1.4"
end

インストール

Gemfile

group :development do
  # 省略...
  gem 'appraisal'
end

In your package's .gemspec 今回は Gemfile に書きました。

$ bundle install
$ bundle exec appraisal install

テストファイル用意

spec/models/task2_spec.rb

require 'rails_helper'

RSpec.describe Task, type: :model do
  it '計算1 should' do
    (1 + 2).should eq 3
  end

  it '計算2 expect' do
    expect(3 + 4).to eq 7
  end
end

テスト実行

$ RAILS_ENV=test bundle exec appraisal rspec spec/models/task2_spec.rb

これで、Appraisals ファイルに記述してある3種類の Rails バージョンで rspec が実行されます。