勤務先の期末のお疲れ様会だった

勤務先の事業部の期末お疲れ様会で、来期も頑張りましょうという感じの会だった。あと、ありがたいことに今期の通期 MVP をもらった。副賞のメタル風の事業部Tシャツ風は旧新卒氏に贈呈した。

PR済みのブランチを削除して同名ブランチでpushしたらCloseになる

差分なしでの Close になるという GitHubでの今日の知見だった。

git checkout -b a_branch
# ここで何かコミットする
git push upstream head
# ここで GitHub で PR にする
git checkout master
git branch -D a_branch
git checkout -b a_branch
# ここで何かコミットする
git push upstream head -f
# ここで GitHub の PR が Close になる

Rails Developers Meetup #3 で講演した

主催の平野さんから登壇依頼のメールをもらって、二つ返事で回答させてもらったのがはじまり。オファーをもらったときに「育成をテーマに」と言われていたので、主題に悩むことなくストーリーづくりを進めることができた。

rails-developers-meetup.connpass.com

当日のスライドは以下。ここ数年行なっている育成についてまとめるいい機会になったと思う。熱が入りすぎて作り込み過ぎてしまい30分枠のところ40分くらい話させてもらって恐縮でした (るりまへのパッチの話など諸々を結構割愛したけれど、それでも溢れてしまった) 。

www.slideshare.net

余談だけど、英語タイトル『Stairway to The Pragmatic Rails Programmer』は、ご存知 Led Zeppelin の『Stairway to Heaven (天国への階段) 』と本スライドへの引用にもある名著『The Pragmatic Programmer (達人プログラマー) 』を組み合わせたうえ、イベントに合わせて Rails というキーワードを入れたもの。旧新卒氏こと junk0612 に相談してできた名前だけれど、名は体を成すということで最近の育成活動について中々まとまった資料になったのではと思う。

平野さんが当日の Twitter での様子もまとめてくれていて、講演のあとの反響をなるほどなるほどと読むことができました (ありがとうございます!) 。

togetter.com

とても素敵な時間を過ごすことができました。ありがとうございました。

Railsのアップグレードに際して作ったGem

Ginza.rb 第49回の最後のトピックで時間の都合で話さなかった持ち寄りネタ帳として、Railsのアップグレードに際して作った Gem とその背景という形でざっくり記す。

activerecord-oracle_enhanced-adapter-monky_patch_755

https://rubygems.org/gems/activerecord-oracle_enhanced-adapter-monky_patch_755

もともとは、たしか Oracle アダプタ利用での Rails 4.2.0 から 4.2.1 にアップグレードする際に AR の find_by や where でタイムゾーンの時差ずれが起きる問題に対応するパッチを集めた Gem だった。その後、Rails 5 でタイムスタンプ型の変更が入った際に、スキーマの変更を行なうことなく Oracle アダプタを使うことをできるようにという Feature まで持たせて元々の目的を越えた Gem にしてしまった例となる。

例えば、Rails 5.1 でプライマリキーのデフォルトを integer から bigint にみたな話もそうだけれど、アップグレードに際して既存の永続スキーマを変更するのはなかなか重い話になることがあるので、その問題とは切り離してまずはスキーマを除いたアップグレードをできるようにした Gem となる (と書くといい話っぽい) 。

Everlasting

https://rubygems.org/gems/everlasting

Rails 5 で AC::Parameters が HWIDA を継承しなくなったことによるエラーを回避するために作った Gem となる。Rails 4.2 までの Hash として備えていたメソッド呼び出しが残ったまま運用で呼び出された場合に障害となってしまうため、そういった呼び出しの証跡をログに残すに留めて Rails 4.2 までの振る舞いをするようになる。

Screamers

https://rubygems.org/gems/screamers

Rails のアップグレードで RDBMS 型の変換が必要になった際の変換コマンドを提供する Gem で、自分的には activerecord-oracle_enhanced-adapter-monky_patch_755 を消すために作った Gem となる (Rails 5 で RDBMS のタイムスタンプ型の変更に追随する目的) 。特定の RDBMS 型の変換量が多い場合に、手作業で間違えなく行なうことが面倒なため、それ用のマイグレーションファイルを生成するコマンドを追加する Gem として作成した。


これらは主にワークアラウンドを切り出しただけの Gem になるため、これらの Gem すべてが Gemfile から不要になった Rails アプリケーションを目指して行くことになる。