diary

I like Hatena Star with a text selection.

2020-01-09

Pixel 3が昨晩から充電が全然されなくなってしまったので、修理依頼を出した。 直近で出かける予定はないし、少し不便だけどあまり困らなさそう。

SMSを受け取れないのは少し困るかもしれない。

買って1年以上経っているのでGoogleの保証が受けられなくて代理店になってしまうのが悲しい


github.com

I18n-tasksを見ていたら、いらなさそうなコードが見つかったので消した。

なお、背後にはI18n-tasksからhighlineを消したいという野望がある。とりあえず雑なPRを出して様子見をしている。 https://github.com/pocke/i18n-tasks/commit/479a137fd6e49491c3fcb8f087a035d653be14a0 パッチはあるのだけど、理由が弱いかなあと思って一旦pending。

highlineを使ってRainbowを消すこともできると思うのだけど、それはあまり意味がない(どうせRuboCopが依存しているので)から、まあhighlineを消したいなあ。


github.com

なんか気になったのでRuby 2.7のkeyword argument対応をした。

I18n.t('foo.bar', option)がダメで、I18n.t('foo.bar', **option)にしなきゃいけないのに結構ハマった。

これRails appでハマる人多そうだなあ しばらく考えていたら、次のようなコードが原因でI18n.tが問題だと中々気がつけずにいたということに気がついた。

capture_stderr do
  I18n.t('foo.bar', option)
end

capture_stderrメソッドがstderrを文字列にしてしまうので警告は画面に表示されなくて、2.7では何も起きなくて2.8では突然死ぬ、みたいな地獄ができていた。 しかもI18n.tはrest引数を受け取って無視するので、I18n.t('foo.bar', option)は2.8では素通りしてしまう(単にoptionがrestに吸収されて無視される)という極悪ぶり。 https://github.com/ruby-i18n/i18n/commit/5eeaad7fb35f9a30f654e3bdeb6933daa7fd421d#diff-14d9864ac07456d554843dc2a3b174a4R179

コケていたのは次のテストでした。

https://github.com/glebm/i18n-tasks/blob/4fd3251f6096b5763becefbc93ed849e9c7a92bf/spec/i18n_tasks_spec.rb#L52-L60


github.com

メソッド呼び出しの最後にcurly braces付きのHashリテラルが付いていると怒るCopを消したいという気持ちを表明した。 以前から嫌いだったのだけど、消せる口実ができて気分がいい。

とはいえ正しい方向に矯正するCopが欲しいような気がしていて、そこはrubocop-typedとかでなんとかできないだろうかと考えていたりする。


github.com

rubygemsのドキュメントを読んでいたら不思議なことになっているのを見つけたので報告した。