diary

I like Hatena Star with a text selection.

2020-06-23

github.com

前提として、私はtmuxを使う時にgitリポジトリごとにtmuxのセッションを切っている。 https://github.com/pocke/www~/ghq/github.com/pocke/wwwにgit cloneされていて、そのgitリポジトリに対応するtmuxのセッション名はpocke/wwwになるようにしている。

そしてtmuxのセッションの作成にはghqとpecoを使っている。ghqでgitリポジトリを一覧して、その中からpecoで絞り込む。 絞り込んだリポジトリ名から、すでにtmuxのセッションが存在していればそのセッションにattachして、存在しなければ新たにsessionを作るようにしていた。

今回は新たに、tmuxのセッション内にいる場合にでも、pecoを使って別のセッションにattach / sessionの新規作成ができるようにした。 これによって、1つのターミナルエミュレータの中で他のtmuxセッションに行き来する場合に、セッションを一度detachしなくても良くなったので便利な気がする。


github.com

https://github.com/rurema/doctree/pull/2292#discussion_r443173842

るりまのRubyVM::ASTのドキュメントを書いていて、モジュールがクラスになっているのをコメントをもらって、それがRDocでもそうなっていたのでPRをした。

2020-06-22

github.com

bundle execの前にbundle installするようにしてみた。


docs.google.com

Kaigi on Rails の CFP がオープンしたとのことで、 Proposal を出そうかなあと考えている。最近ずっとやっているrbs_rails周りで話したい。


ど先端ナース 全2巻読んだ。良い。 かわいい女の子が出てくるのでいい話。

2020-06-20

rbs_railsの更新は、一旦rbsの新構文が入るまでお休みしようかな。


github.com

trace_location gemで、エラーが出た時にException#messageしか出てくれなくて不便だったのでException#full_messageを出すようにした。


github.com

trace_location gemで、インデントされていないメソッドが呼ばれた時にエラーになってしまっていたのを直した。 これは実用上はあんまり起きそうにない(大体のメソッドはインデントされて定義されるだろうから)けれど、試しに動かそうとした時にハマったので直した。


github.com

trace_location gemを速くした。

なんか6倍ぐらい速くなったっぽい。メソッドのソースを取る処理がとても重かったので、それをキャッシュしただけでグッと速くなった。


github.com

RubyVM::AbstractSyntaxTreeのドキュメントを書いている。

https://github.com/pocke/dicts で生成している辞書がるりまに依存していて、いい加減 AbstractSyntaxTree で辞書補完がされてほしい気持ちになってきたのだった。

2020-06-19

左手人差し指が腱鞘炎で、キーボードカタカタハードモードになっている。つらい。


github.com

SteepのLSPでrequire 'uri'がなくてURI定数を参照できなくてエラーになっていたので直した。


$ docker run -it --rm rubylang/all-ruby env ALL_RUBY_SINCE=ruby-2.0.0 ./all-ruby -rrubygems -e 'p URI'
ruby-2.0.0-p0       -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
...
ruby-2.2.9          -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
ruby-2.2.10         URI
ruby-2.3.0-preview1 -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
...
ruby-2.3.6          -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
ruby-2.3.7          URI
ruby-2.3.8          URI
ruby-2.4.0-preview1 -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
...
ruby-2.4.3          -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
ruby-2.4.4          URI
...
ruby-2.4.10         URI
ruby-2.5.0-preview1 -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
...
ruby-2.5.0          -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
ruby-2.5.1          URI
...
ruby-2.7.0-preview3 URI
ruby-2.7.0-rc1      -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1
...
ruby-2.7.1          -e:1:in `<main>': uninitialized constant URI (NameError)
                exit 1

Rubyのバージョンによって、rubygemsをrequireしただけだとURIを参照できたりできなかったりするのに気がついた。なぞ。


github.com

rbs_railsにActive Supportの型を取り込んだ。 とりあえず自動生成で作られたものだけを取り込んだので、多分何か壊れているとは思う。

これを取り込むのにSteepのextension周りがうまく動かず、複数のextension定義を1つにまとめるようにして倒した。

https://github.com/pocke/rbs_rails/blob/f8579aca315d6b48d179585f301a4fbf42a9a055/bin/merge-duplicate-decls.rb


github.com

rbs_railsにActive Modelの型も取り込んだ。これも自動生成。 Active Modelは型の行数も少なく、思ってたよりかなり楽に取り込めた。

また、型パラメータを持つクラスやモジュールを継承したりincludeしたりするのがrbs prototypeだけだとうまくいかないので、それをいい感じにするスクリプトを書いた。 Active Supportのときも似たようなことを手でやったのだけど、流石にめんどくなって自動化した。

https://github.com/pocke/rbs_rails/blob/f8579aca315d6b48d179585f301a4fbf42a9a055/bin/add-type-params.rb


github.com

Active Recordの型を取り込んでいる。

これは量が多いし、rbs_railsのコア機能との兼ね合いもあるので少し大変そう。


github.com

ActiveSupport::Concernをうまく扱えていないことに気がついた。 これをARより先に片付けたいところ。Active Support, Active Modelの型も生成し直しになるし、RBSの構文が変わるのを待ったほうが良いかもなあ

2020-06-18

www.amazon.co.jp

セールで本がやたら安くなっていたので結局25冊ポチった。 1冊160円ぐらいだからこれだけポチっても大したことがなくてすごい。技術書だったら下手したら1冊買えないかもしれない。

次の本あたりが特に気になってる。

地名の楽しみ (ちくまプリマー新書)

地名の楽しみ (ちくまプリマー新書)

日本語全史 (ちくま新書)

日本語全史 (ちくま新書)

2020-06-16

Pixel 3aを買った。昨日ポチって翌日届いたのですごい。


github.com

SteepでPathname#globの戻り値の順序が環境依存なせいでむずい挙動を踏んだので、sortするようにした。


github.com

↑で踏んだむずい挙動はsortしたところでちょいむずになるだけなので、別途報告した。