週刊Railsウォッチ(20190212)EnvoyとIstioに大注目、SQLQLとは、buildkite.comのCI、さよならItanium、PWA vs Androidほか

こんにちは、hachi8833です。ドラフト作成中に月曜が祝日だということに気づいて日付↑を直しました。 連休という言葉が聞こえてきた。連休? 月曜休み? え? — Yukihiro Matsumoto (@yukihiro_matz) February 7, 2019 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください 公開つっつきにお集まりいただいた皆さまありがとうございます🙇。今回は予想を超えた濃厚かつハイレベルなやりとりがバルク転送的な勢いで繰り広げられて、私はすっかり振り落とされてしまいました😇。果たしてどこまで書き起こせるか。今回は結果的にインフラ成分がかなり多めとなりました。 ⚓Rails: 先週の改修(Rails公式ニュースより) 今回はコミットリストから見繕いました。 ⚓ActionViewのメモリリーク修正第一弾 PR: Move compiled ERB to an AV::Base subclass by tenderlove · Pull Request #35036 · rails/rails PR: ActionView leaks memory in dev · Issue #35032 · rails/rails #35032より これもAction Viewの修正なので一緒に↓。 PR: Speed up partial rendering by caching “variable” calculation by tenderlove · Pull Request #35171 · rails/rails つっつきボイス:「おー地道にメモリリークを修正!」「この間から@tenderloveさんがActionViewを改修してたのはもしかしてこれをやりたかったのかなと」「Railsのメモリ消費が減るのはとてもいいこと😊」 ⚓CollectionProxy#concatがselfを返すよう修正 PR: Fix `CollectionProxy#concat` to return self by alias it to `#<<` by ypresto · Pull Request #35174 · rails/rails CollectionProxy#concatやCollectionAssociation#concatのドキュメントには「selfを返すからメソッド呼び出しをチェインしてもよい」とあるが、実際には引数の配列を返していた。 このPRでは前者をArray#concatの挙動に合わせることでドキュメントのとおりになるようにし、後者についてはドキュメントから該当部分を削除した。 同PRより大意 つっつきボイス:「お、CollectionProxy#concatをメソッドチェーンできるようにしたのか」「CollectionProxyってhas manyのときのヤツかな」「以下の<<のエイリアスメソッドを足してる↓」「#concatはそんなに積極的には使わないかな〜」 参考: concat — ActiveRecord::Associations::CollectionProxy # activerecord/lib/active_record/associations/collection_proxy.rb#L1031 alias_method :push, :<< alias_method :append, :<< + alias_method :concat, :<< ⚓terminal-to-htmlの古いURLを更新 PR: Update terminal-to-html inline images url in ScreenshotHelper documentation by betterzega · Pull Request #35173 · rails/rails 微修正ですが。 サイト: Terminal - Inline Images buildkite.github.ioより つっつきボイス:「terminal-to-htmlって?」「私も知らなかったんですが、テストでスクショを表示するサービスか何かのURLが古かったんでちょい修正した感じで」「おー、ターミナルにスクショを表示するヤツか」「あーなるほど!そんな機能があったとは〜」 「そういえばこのbuildkiteって自分たちもCIで使ってるし」「それってCircleCIみたいな?」「それとは少し違って、それぞれのエージェントで動いているものの結果を管理できるとかそういう感じ: たとえばEC2の上でエージェントを動かして、そこでDockerを落としてきて、結果を取るとか」「つまりCIに限らない?」「基本はCIですけどね: たしかSmartHRさんがわかりやすい記事書いてて、元々Shopifyが使い始めたとか何とかで(↓スライド)」「へ〜」 サイト: Buildkite 参考: Rails のテスト実行時間を60分から6分に短縮するまで - SmartHR Tech Blog サイト: Continuous Integration and Delivery - CircleCI 「あーなるほど、↓パイプライン管理がメインなのか」「そういえばGitLab CIも最近はこういうことができるようになってたし☺️」「CircleCIで苦しくなってきたら欲しくなる感じ」「CircleCIってパワーが不足気味って言われたりしますね」 Buildkite は一般的な CI サービスと異なり、このサービス自体はビルドの実行は担わず、主としてビルド全体のパイプライン管理を行うことに特化しています。 ビルドの実行のためには Buildkite の Agent を実行したマシンを用意します。Agent の数はユーザが任意の数立ち上げることが可能になっています。 SmartHR記事より 「buildkiteはCircleCIよりはお高いけどその分速くて、お値段にはEC2のランニングコストも含んでるけど、土日にEC2を回さないホワイトな職場なら割安になるし💰」「なるほど、それはEC2が分単位の課金になったのが大きいっすね」「これは自分たちのAWSアカウントで回せる?」「ですね」「ならReserved Instancesとかも使えそう😋」 参考: リザーブドインスタンス(RI)- Amazon EC2 | AWS 「ちなみにAWSこの辺の値段ってしょっちゅう変わるんですが😅、最近だとConvertible Reserved Instancesっていうのがなかなかよくて、今までのReserved Instancesだと買ったときのインスタンスサイズから変えられなかったのが、たとえばmediumが2でlargeが4みたいにユニット単位で購入して、ユニットを混ぜたり分割したりできるんですよ」「お〜!」「オークションで買うのってまた別のやつでしたっけ?」「それはスポットインスタンスですね🧐」「なお、Reserved … Continue reading 週刊Railsウォッチ(20190212)EnvoyとIstioに大注目、SQLQLとは、buildkite.comのCI、さよならItanium、PWA vs Androidほか