vscodeのsnippetでrubyのクラスをファイル名を元に自動でセットする

確かatomではrubyのsnippetを使ってクラスを書くときに、ファイル名から自動で生成してくれたと思うのですが、 vscoderuby snippetではクラス名は ClassName 固定でセットされています。
これが煩わしいので、独自のsnippetsを書いて対応しました。

やり方

vscodeのコマンドパレットで snippets と打ち、次に言語選択でrubyを指定すると、 ~/Library/Application Support/Code/User/snippets/ruby.json が生成されます。

   "Class definition from filename": {
        "prefix": "class",
        "body": [
            "class ${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}",
            "\t$0",
            "end"
        ],

こんな感じのsnippetを定義すればokです。  

foo_bar_baz.rb ファイルでcla と打つと(classと打たなくても、途中まででsuggestionされる) 以下が自動で入力されます。

class FooBarBaz
  
end

メデタシ、メデタシ。

少し解説

参考) vscode-rubyの定義
vscode-ruby/ruby.json at main · rubyide/vscode-ruby

ファイル名

公式ドキュメントに利用可能な変数定義が記載されています。
拡張子は不要なので、 TM_FILENAME_BASE を利用します。
Variables

passcalcase

passcalcaseへの変換ですが、非常にわかりにくいのですが、公式ドキュメントにEBNFで使えると書いています。 要は正規表現にマッチする値に対して、各種変換処理が利用できるとのことです。
Grammar#

おまけ:既存のsnippetsを非表示にする方法

ドキュメントを読んでいて気づいたのですが、不要なsnippetsを非表示にする方法の記載がありました。 Can I remove snippets from IntelliSense?

やり方は、コマンドパレットから Insert Snippetを選んで、 非表示にしたいsnippet名を入力し、非表示アイコンを押すだけ。
 

この情報がどの設定ファイルに書き込まれているのかは不明。 syncの対象になっているかなどは気になるところ。

さよならWebpacker

Rails7で importmap-railsjsbundling-rails という新しいフロントエンドの仕組みが取り入れられました。
 
ここでは詳細は省きますが、以下の3つの技術的な背景があり、これまで利用してきたWebpackerを利用する必要がなくなっていました。

  • ES6 : IEのサポートが終了。ES6が主要ブラウザでサポートされるようになり、トランスパイルが不要。
  • HTTP2 : 多数のファイルをブラウザで受信してもパフォーマンスへの影響は大きくなった。そのため、JSをバンドルする必要がない。
  • import maps : importするモジュールの名前解決する仕組みが策定。chrome系でサポートされ、他のブラウザもshimで利用できる。

突然のさよなら

その日は近い将来やってくるだろうと思っていましたが、

rails commit log流し読み(2022/01/21) - なるようになるブログ を見ていると、

Adds webpacker retired note to the webpacker guide [ci skip]

rails guideのWebpackerの修正です。

guideの先頭にWebpackerは開発終了になった旨説明を追加しています。

との記述が。

github

githubを見ると

ホットモジュールリロードやコードスプリットがなくても大丈夫な場合は、
jsbundling-railsへの切り替えを検討してください

Webpacker5からjsbundling-railsへの移行ガイド が作成されています。

RailsコアチームはWebpackerのv6をリリースしない予定
このリポジトリにある未発表のv6作品をベースにしたShakapackerという新しいgemでその開発ラインを継続中

v6がいつ出るのかと待っていたのですが、結局リリースされずに shakapacker という別gemになるようです。

今までたくさん苦しめられたWebpackerですが、お役御免となり引退となりました。
さよならWebpacker。

スタンフォード式 最高の睡眠 読了

睡眠系の本は好きなのでよく読むのですが、知らない話もあったのでメモしておきます。
早速いくつか取り入れてみよう。

最初の90分が重要。

  • グロースホルモン(成長ホルモン)が最も多く分泌される
  • 皮膚の保水量は睡眠で上がる f:id:rochefort:20220124115920p:plain

深部体温

  • 炭酸泉は湯疲れがない
  • すぐ寝るならシャワーの方が良い(深部体温を上げすぎない)
  • もしくは足湯も良い(手足は熱放射しやすい)
  • 靴下は履いて寝ない方が良い
  • そば殻の枕は頭の温度を下げて脳を休めるのに有効

覚醒

睡眠と覚醒は表裏一体。

覚醒のスイッチ

  • 太陽の光を浴びる
  • 起き抜けは裸足(深部体温と皮膚温度の差が小さいと眠くなるという性質の逆)
  • 水で顔を洗う
  • 朝食を取る(噛む方が良い)

NG

体温が上がった結果、下がって眠くなる。

  • 朝風呂
  • 汗をかく

食事

  • 夜の冷やしトマト(深部体温下げる)
  • アルコールは度数が強くても量が少なければok。(1合なら、寝る100分前に飲むと寝つきが良くなる)
  • ナイトキャップとして一口飲むくらいなら寝る直前でもok。

昼寝

  • 30分未満の昼寝は、昼寝の習慣がない人に比べて認知症発生率は 1/7。
  • 1時間以上の昼寝は、2倍。(さらに糖尿病リスクも高まる。)

その他

歯並び

  • 成長期のサルの鼻をふさぎ口呼吸にさせたら、歯並びが悪くなった

寝るときの明かり

  • 夜間の豆電球ほどの明かりは、肥満や資質代謝異常のリスクも増やす