昨日 Meguro.rb#2 2017/04/20(Thu) でLTをしたのでその時の資料を公開したいと想います
- スライド版
- ブログ版(内容はスライドとほぼ同じです)
- 1. ドキュメントのtypoなどを修正
- 2. .travis.yml に新しいRubyのバージョンを追加
- 3. gemの新しいバージョンが出たので依存を緩めたい
- https://github.com/activeadmin/activeadmin/pull/4722
- 4. activesupportやactiverecordに依存してるgemでRuby 2.2未満系でコケるので5系未満使うようにする
- 5. Railsのrc出たからとりあえずビルドしようぜー!
- 6. Travis CI対応してないリポジトリに .travis.yml 投げつける
- Let’s contribute! :innocent:
- 備考
- 2017/4/24追記
スライド版
リポジトリ: https://github.com/sue445/megurorb-02
ブログ版(内容はスライドとほぼ同じです)
1. ドキュメントのtypoなどを修正
- これが一番プルリクの難易度は低い
https://github.com/gitlabhq/gitlabhq/pull/7534
- GitLabのwebhookで実装はされているが、リファレンスから漏れているパラメータがいくつかあったので追加
- 「◯◯(プルリク番号)で追加されているけどその時にリファレンスに更新されていないよ!」って言えればベスト
- GitLabはAPIの実装とリファレンスの差異が結構多いので狙い目
- 今は GitHub ではなく https://gitlab.com/gitlab-org/gitlab-ce だけでissueなどを受け付けている
2. .travis.yml に新しいRubyのバージョンを追加
rvm: - 2.1 - 2.2.2 - 2.3.1 # ここに2.4を追加したい
CI against ruby 2.4
https://github.com/sue445/index_shotgun/pull/28/files
英文の元ネタ
https://github.com/amatsuda/database_rewinder/commit/6a1f87c3a0729391bd24c68f38d28622d385479b
「CI against 〜」は使いやすいので定型句として覚えていていい
3. gemの新しいバージョンが出たので依存を緩めたい
https://github.com/activeadmin/activeadmin/pull/4722
- kaminari v1系が出た直後に、activeadminでkaminari 1系使うために依存を緩めたかった
英文の元ネタ
https://github.com/activeadmin/activeadmin/commit/7a861b723bd65ea174541cf2f23048143575cba8
「Relax ◯◯ dependency for △△△」も使いやすいので定型句として覚えていていい
4. activesupportやactiverecordに依存してるgemでRuby 2.2未満系でコケるので5系未満使うようにする
- 1年以上ビルドしてないようなリポジトリだと久しぶりのPRでビルドがコケる原因第1位
https://travis-ci.org/railsware/global/jobs/198722120
Gemfileにとりあえずこれ書いとけば bundle install
できるのでPR送る
if Gem::Version.create(RUBY_VERSION) < Gem::Version.create("2.2.2") # activesupport 5+ requires MRI 2.2.2+ gem "activesupport", "< 5.0.0" end
- 「Ruby 2.2.2未満で動かんからとりあえずサポート切ったわ!」っていきなりPR送るのは穏やかじゃないので、Ruby 2.2.2未満だったらCIでactivesupport 5系使わないようにしてCIを正常な状態に戻すのが平和
- 実際にRuby 2.2.2未満のサポート切るかどうかはリポジトリオーナーの判断に委ねる
Tips:バージョンは文字列比較ではなく Gem::Version で比較した方がいい
"2.1.10" > "2.1.2" #=> false Gem::Version.create("2.1.10") > Gem::Version.create("2.1.2") #=> true "5.1.0" > "5.1.0.rc1" #=> false Gem::Version.create("5.1.0") > Gem::Version.create("5.1.0.rc1") #=> true
5. Railsのrc出たからとりあえずビルドしようぜー!
https://github.com/mitaku/komachi_heartbeat/pull/22
.travis.ymlで複数gemfile対応してるのであればgemfile作って1行追加するだけ
gemfiles/rails5_1.gemfile
source "https://rubygems.org" gem 'rails', "~> 5.1.0.rc1" gemspec path: '../'
.travis.yml
gemfile: - gemfiles/rails4_1.gemfile - gemfiles/rails4_2.gemfile - gemfiles/rails5_0.gemfile - gemfiles/rails5_1.gemfile # <- 1行追加
正式版じゃないのでallow_failuresにしておいて、ビルドコケるのは許容する
matrix: allow_failures: # NOTE: There are unstable versions - rvm: ruby-head - gemfile: gemfiles/rails5_1.gemfile # TODO: Remove this after rails5.1 is released!
6. Travis CI対応してないリポジトリに .travis.yml 投げつける
- 自分のforkしたリポジトリでTravis CI設定してちゃんと動作確認した後でPR送るのが親切
- https://github.com/mitaku/komachi_heartbeat/pull/5
Let’s contribute! :innocent:
備考
今回スライド作成に reveak-ck を使っていますが、reveal-ckはOGP対応していなかったのでOGP対応してプルリク投げています
発表に使ったスライドもプルリク投げたブランチでビルドしています
# frozen_string_literal: true source "https://rubygems.org" gem "rake" # gem "reveal-ck" gem "reveal-ck", github: "sue445/reveal-ck", branch: "meta_contents"
https://github.com/sue445/megurorb-02/blob/68f69bcd4de980969e9b0fa42fed9e6c262b8b69/Gemfile
OGP対応の結果はこちらになります sue445.github.io
2017/4/24追記
reveal-ckに僕のプルリクが取り込まれたやつが v3.6.0 としてリリースされています! https://github.com/jedcn/reveal-ck/blob/master/CHANGELOG.md#360–2017-04-23