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 に進んで行くことになる。

Fate/Grand Order Gutentag Omenをクリアした

年一回のお祭りなので全159サーヴァントゲットでクリアしておいた。 翌00:00を持ってサービス終了という例年の割り切りっぷりが流石。

f:id:koic:20170403214153p:plain:w300

サービスというのは継続することで儲ける必要のあるものかどうかという意義と、サービス終了まで速いか遅いかというライフサイクルは切り離して (あるいは組み替えて) 考えることができるかもしれないという面白い例だと思う。

2016年卒の一年の成長ふりかえり

勤務先に新卒氏が入社して一年の節目ということで行なった。

一年前の入社時と現在を比べて「できなかった」が「できるようになった」ことをホワイトボードに書き出すといったことを軸に進めていた。

漠然とした「やったこと」がないから「やったことがある」に変わるのは過ごした時間に対して増分する成長といえるが、「コミットメッセージに対して Why を考えて書くようになった」や「git 操作でできることが増えた」というのは、システムのメンテナンスに対して自分の頭で考えて過ごした濃度の上がった時間に対する成長かなと思っている。

来月からは任期一年の新卒氏の称号がなくなった世界を楽しんで成長してもらいたい。