読者です 読者をやめる 読者になる 読者になる

OSSにパッチを出すため動かし方 (Travis CI / Appraisals 編)

Pull Request を出すまでの流れ。例題として RailsAdmin の v1.1.1 を挙げる (master だとそのうちサンプルとしているコードが変わるので) 。

github.com

まずはテストの実行まで

途中の手順4でテストが落ちるという出来レースの話があって、そこからが人によって少しお役立ち情報かもしれない。

1. ローカルに持ってくる

なにはなくとも手元になければ、

% ghq get https://github.com/sferik/rails_admin

もしくは、

% git clone https://github.com/sferik/rails_admin

を実行する。

ghq と gem-src を使ったりなどで既に手元にあれば git pull origin master なんかで最新のコードにする。

2. bundle install する

% bundle install

3. .travis を見る

テストを実行するにあたり .travisbefore_script に書かれているものを確認する。

before_script:
  - cd spec/dummy_app
  - bundle exec rake rails_admin:prepare_ci_env db:create db:migrate
  - cd ../../

このように記されている場合はテストの事前準備として書かれているように実行する。 注意点として、CI ではテスト環境が使われるためここの bundle exec rake rails_admin:prepare_ci_env db:create db:migrate では、RAILS_ENV=test bundle exec rake rails_admin:prepare_ci_env db:create db:migrate環境変数を指定すると良い。

4. bundle exec rake

あとはテストを実行してグリーンになることを確認する。

% bundle exec rake

そして、この例だと PaperTrail まわりのテストが落ちてグリーンにならなかったと思う。

Appraisals を使う

ここから後出しジャンケンっぽい延長。

RailsAdmin では Appraisals という Gem を使って複数の Rails のバージョンのテストができるようになっている。

github.com

Appraisals の詳細は公式ページやインターネットに任せてざっくりと書く。

延長1. Appraisals というファイルを見る

例えば rails-5.0 向けテストをするため、そのための `bundle install` をするとする。

見るべきポイントとしては、ディレクトリルートの Appraisals ファイルとなり、そこに書かれた appraise "rails-5.0" do"rails-5.0" という値を使って以下のように bundle install を実行する。

延長2. appraisal を使った bundle install

appraisal を使って rails-5.0 向けの bundle install となる。

% appraisal rails-5.0 bundle install

延長3. appraisal を使ったテストの実行

テストも同じように appraisal を使った実行をする。

% appraisal rails-5.0 bundle exec rake

これでテストがグリーンになったと思う。 こういった感じで、変更に応じてローカルでテストが通ることを確認しつつ PR に進んで行くことになる。