RUBYOPT=-W:deprecated 環境変数を設定しておこう

古いruby2.7系のアプリを3.1.2に更新する作業をしていました。

rubyのでdeprecated warningについて

ruby2.7.1 でキーワード引数関係のdeprected warningが沢山出るようになったののを受けて ruby2.7.2 では、deprecated warningをデフォルト非表示にする対応が入っていました。

この辺かな。 Feature #16345: Don't emit deprecation warnings by default. - Ruby master - Ruby Issue Tracking System https://bugs.ruby-lang.org/issues/16345

とりあえず有効化しておこう

多くのライブラリは、ruby3への更新が行われ、現在は大量にwarningが出ることは無くなったので、有効化しておくのが良いでしょう。 当時も、ruby2.7.4に無事更新が終えたら、有効化していました。

RUBYOPT=-W:deprecated

ruby2.7がEOLになったら、デフォルト有効となる挙動に戻しても良いかもですね。

esbuildでお手軽にbookmarkletを作る

bookmarkletをnpm scriptで簡単に作成できないか検討してみました。

前提

即時関数化

メインの話とはずれますが、
bookmarkletはglobal汚染してしまうので、即時関数化が必要です。
これはJS側に書いておくことにします。
(※即時関数もbookmarklet生成時に追加することは可能ですが、今回やってませんよという話。)

ご参考) IIFE (即時実行関数式) - MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN

minify

esbuildはtsでの利用も可能で軽量なのと、minifyオプションが付いていて簡単に1liner化できます。
今回は、これを利用することにしました。

npm script

shellを書いてもよかったのですが、JSで完結したく、npm scriptでできないか検討しました。 当初 echo -n javascript: & esbuild ... で実施しようとしましたが、 npmでは複数コマンドを実行することができず、少しはまっていました。

最終的に

shell側でnestすることで対応しました。

  "scripts": {
    "bookmarkletize": "echo javascript:$(esbuild --bundle *.js --minify)"
  }

プロを目指す人のためのRuby入門 読了

cherry本、第二版読了。 初版も読んでいたのですが、第二版も読んでみました。 サンプルコードも書きながら楽しく読み進めれました。 最近RubyRails初めた人が2冊目、3冊目あたりに読むのが良いかなぁという印象を持ちました。

個人的には

第11章のパターンマッチングが追加されているのが非常によかったです。 とても勉強になりました。 パターンマッチングは使うこともありそうなので、ここで勉強できて良かったと思いました。

また、12章のRubyデバッグ技法を身につける、もRuby3.1で入ったdebug.gemにも触れられていて良いです。

あと、13章のRubyに関するその他のトピック、で今はTime使っておけばよいということや、 警告表示の「RUBYOPT=-W:deprecated」にも触れられていてとても良いです。

ちなみに、環境変数以外での設定は知りませんでした。

Warning[:deprecated] = true