Rails/OSSパッチ会 (2019年2月)

Rails/OSSパッチ会 (2019年2月) だった。

個人的に今回のパッチ会については、うなすけメンバーがくれている PR について Rails コミッターに意見を伺うのが目的のひとつだった。

github.com

断言できるような回答はないものの、文字列の方が好ましい上で、シンボルについても Rails が許可しているので許可しておくといった流れで良いのではと後日コメントした。

それとは別として書いたパッチは以下。再現確認から PR を開くまで1時間くらいだった。

github.com

次回 Rails/OSS パッチ会は 2019年3月13日(水)です。

Asakusa.rb 第502回

Asakusa.rb 第502回だった。

RuboCop に提案の来ていた new cop をクローズするにあたり、同僚の何名かに加えて ujihisa さんはじめ Asakusa.rb メンバーの何名かに意見を聞いてみたりしてクローズしていた。

github.com

あとは RuboCop Rails の config へのメタデータの追加とそれらをドキュメント反映するような rake task の更新をした後に、Railsdm どんな感じでしょう的な話を okuramasafumi さんとするなどして過ごしていた。

github.com

RuboCop Rails については、config のための injection ハックといくらかのドキュメント書きをすればリリースレディになると思っている (ほか何かあったかな...) 。まとまった時間がとれたタイミングで行う予定。

RuboCop 0.65.0 のリリース予定内容

今晩 (2/19) くらいにリリースされる予定である RuboCop 0.65.0 のざっくり内容です。

github.com

New features

#6126: Add an experimental strict mode to Style/MutableConstant that will freeze all constants, rather than just literals. ([@rrosenblum][])

Style/MutableConstant cop に strict モードがオプションとして入りました。デフォルトで strict というのが当初の提案でしたが、厳しすぎるように思えたためオルタナティブという形で落ち着きました。

Bug fixes

#6765: Fix false positives in keyword arguments for Style/MethodCallWithArgsParentheses omit_parentheses. ([@gsamokovarov][])

Style/MethodCallWithArgsParentheses のエッジケースについての不具合修正です。

#6763: Fix false positives in range literals for Style/MethodCallWithArgsParentheses omit_parentheses. ([@gsamokovarov][])

同じく Style/MethodCallWithArgsParentheses のエッジケースについての不具合修正です。

#6748: Fix Style/RaiseArgs auto-correction breaking in contexts that require parentheses. ([@drenmi][])

Style/RaiseArgs の auto-correct で invalid なコードに破壊してしまうケースを修正しています。

#6751: Prevent Style/OneLineConditional from breaking on retry and break keywords. ([@drenmi][])

if true then retry else 7 end のようなワンライナー中で retry あるいは break を使っているエッジケースでのエラーを防ぐようにしています。

#6755: Prevent Style/TrailingCommaInArgument from breaking when a safe method call is chained on the offending method. ([@drenmi], [@hoshinotsuyoshi])

Style/TrailingCommaInArgumentscsend (&.) を使ったコードに対してエラーになるケースを防いでいます。

Changes

#6766: Drop support for Ruby 2.2.0 and 2.2.1. ([@pocke][])

Psych 3.1.0 以上を使うため、Ruby 2.2.0 と 2.2.1 のサポートをドロップしています。なお近々 Ruby 2.3 系が EOL になった頃に Ruby 2.2 系のドロップを検討しています。

#6733: Warn duplicated keys in .rubocop.yml. ([@pocke][])

.rubocop.yml で重複している cop 設定を見つけるようにしています。

#6613: Mark Style/ModuleFunction as SafeAutocorrect: false and disable autocorrect by default. ([@dduugg][])

Style/ModuleFunction が行う auto-correct が常に意図された互換になるものではないため unsafe にしています。

何かあればフィードバックをといいたいところですが、いまのところ RC リリースなどはないためお試しいただく場合はリポジトリのコードを手元に持って来て rake install などでソースインストールしてお試しください。

Repro Tech Meetup #6 で登壇した

Repro Tech Meetup #6 に登壇した。

repro-tech.connpass.com

経緯としては1月の Shibuya.rb で @threetreeslight さんに「Long Life RailsApps をテーマにイベントをするのでどうでしょう」といった登壇依頼を頂いたのがきっかけだった。

Repro さんにはジョーカーさんをはじめお世話になっているので、「はい」か「喜んで」の AND で「はい。喜んで。」といった回答の流れで決定した。

当日のスライドは以下。

長年開発運用している Rails アプリケーションの Rails のアップグレードをテーマに、OSS との付き合い方やアップグレードを進めている時の話をカットしてお送りした。Rails 4.0 以降のアップグレードにおける変更で個人的に印象が強いのは ActionController::ParametersHash (ActiveSupport::HashWithIndifferentAccess) を継承しなくなった際に起きた問題で、そのあたりは以下の日記にも記していたものだった。

koic.hatenablog.com

タイトルの『Long Live Ride on Rails』の元ネタはもちろん Rainbow の『Long Live Rock'n'Roll』となる。

Long Live Rock & Roll

Long Live Rock & Roll

英語として正しいか分かっていないけれど、hide & Spread Beaver の ROCKET DIVE にある "SPEED FREAKS BABY ROCKET DIVE" みたいなものでノリを優先していた感じだった。

ROCKET DIVE

ROCKET DIVE

kamipo さんが当日参加したりなど、Beta で胎動している Rails 6 や Active Record の中身に関する話を質疑応答などをとおして聞けたりなど付加価値もたくさんあったイベントだったと思う。

楽しかったです。ありがとうございました。

At the end of a dream...

f:id:koic:20190207233234j:plain:w400

Rails/OSSパッチ会 (2019年1月)

Rails/OSSパッチ会 (2019年1月) だった。

Rails 5.2 向きの Oracle enhanced adapter で困っていた OCIError: ORA-03113: 通信チャネルでend-of-fileが検出されました (ActiveRecord::StatementInvalid) の問題について、yahonda さんに聞いたところ以下の TCP keepalive を加えた変更が起因の可能性があることがわかり、同僚がカスタムできるよう手を付ける感じの流れだったのでお任せしていた。

github.com

他はおもに RuboCop まわりのレビューなどしていたらタイムアウト。途中何度かの雑談してたうち、レビューが終わらないうちというかそのままの変更内容で他の誰かにマージされたくない場合は、自分をアサインしておくと良いという protip を y-yagi さんに教えてもらったので、rails/rails リポジトリにおける暗黙の運用 (?) のようではあるがとても良いヒントだったので、この日記にメモラブルクォートしておく。

あとは Ruby の trunk の以下の Docker イメージの状態 (experimental) などについて amatsuda さんに聞いたりして過ごしていた。

hub.docker.com

次回の Rails/OSS パッチ会は 2月28日(木) です。

Asakusa.rb 第497回

Asakusa.rb 第497回だった。

ジョーカーさんと Repro Tech Meetup #6 の話をしたり、Railsdm 2019 の登壇者がちらほらいたのでそんな話をしつつ、ちょうど昼間に踏んだ gemdiff の問題にパッチを送ったりして過ごしていた。

github.com

Repro Tech Meetup #6 Long Life RailsApps に登壇します

Repro Tech Meetup #6 で、Long Life RailsApps をテーマに登壇します。

repro-tech.connpass.com

先日の Shibuya.rb で threetreeslight さんにお声がけいただいたもので、当日は 2013 年に Rails 4.0 で rails new されてから6年目 (Rails 5.2) に突入していく Rails アプリケーションのアップグレードやもしかするとチームなんかの話をしようと思っています、、、が昨日の今日に頂いた登壇オファーなので、乞うご期待となりますがよろしくお願いします。

ちょうど Rails 6.0.0 beta 1 がリリースされたことでもあり、そのあたりの話も交えつつするかもしれません (未定) 。

weblog.rubyonrails.org