diary

I like Hatena Star with a text selection.

2020-01-03

朝どれのRubyで昨日の分の日記をpublishしようとしたらNokogiriのエラーが出た。 とりあえずgem install nokogiriしなおしたら動いた。

/home/pocke/.rbenv/versions/trunk/bin/ruby: symbol lookup error: /home/pocke/.rbenv/versions/trunk/lib/ruby/gems/2.8.0/gems/nokogiri-1.10.7/lib/nokogiri/nokogiri.so: undefined symbol: rb_empty_keyword_given_p

昨日からゆるゆりを見ながら作業している。

「あかりうすしお大好き」の回、狂気を感じてしまってすこしにがて


るりまでコメントしたPRを、自分で直してマージしていっている。

https://github.com/rurema/doctree/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Aopen+involves%3Apocke

とかから自分がコメントしたやつを探している

今日は気分が乗ったのでるりまのPRを沢山マージした。 TracePoint周りを見ているのだけど、バージョン差が多くて安定したexampleを書くのが少し大変そう。 まあある程度安定させつつ最新版で動けばいいかなぐらいの気持ち。


ruby-signatureで、あるクラスにincludeされることを目的としたmoduleってどう型を定義したら良いのだろう。

module M
  def print_request
    p request
  end
end

class ApplicationController
  include M
end

このケースではMはrequestメソッドが定義されていないからSteepではNoMethodErrorになってしまうのだけど、実際はApplicationControllerincludeされるから問題がない。 「このモジュールはこのクラスにincludeされる(or このinterfaceを持つクラスにincludeされる)」ことを前提として書けたら便利そう。あるのかな


ruby-signatureのstdlib-testが死んでいるのでなんとかしたい、けど何も分からなかった。 ruby-jpのtypesチャンネルにつぶやいた進捗をこちらにもぺたり。

ruby-sigatureのstdlib_testをRuby 3対応させるのが無理なのではという気がしています。 https://github.com/ruby/ruby/commit/beae6cbf0fd8b6619e5212552de98022d4c4d4d4 でキーワード引数分離がmasterに入ったんですが、これによって rake stdlib_testがコケるようになっています(今までも警告が出ていたのだけど) これを倒すにはhookをRuby 3 keyword対応させなきゃいけないのだけど、ちょっと試してみた感じ何も分からんになっています。

https://gist.github.com/pocke/780ccfe41fbd03bfd2bb93c3a7c5ec36 こんな感じでparametersを見てキーワード引数を持っているかどうかで分岐をさせてみるのを試したんですが、C実装のメソッドはキーワード引数があってもrestとしか言ってこなくて負けました。

そのあとmameさんにProc#ruby2_keywordsが入っているのを教えてもらって、それを使ったらうまくいった。

github.com


IFTTTで自分のTwitterのツイートとfavをSlackに流すのを始めてみた。 まだデータがたまっていないので便利かどうかはよくわからない。

IFTTTのUIがわけわからなすぎて大変だった。Zapierの方がわかりやすいなあ。


↑でも言ったのだけど、Ruby 3 keyword argumentがmasterに入って色々壊れそう。 https://ruby-trunk-changes.hatenablog.com/entry/ruby_trunk_changes_20200103

masterを常用するのは大変ですなあ


__builtin系でparameters情報が増えていそうで便利。

master

irb(main):001:0> TracePoint.method(:trace).parameters
=> [[:rest, :events]]

2.6

irb(main):001:0> TracePoint.method(:trace).parameters
=> [[:rest]]