1. tanaken on Rails
  2. #034: Rails 7.2.1
2024-08-25 20:08

#034: Rails 7.2.1

00:01
こんにちは、tanakenです。第34回のtanaken on Railsです。
今週はですね、This Week in Railsの更新がまだされておらず、
現在、8月25日の13時過ぎ、現在ですが、まだ更新がされておらんので、
今回はですね、直近リリースされたRails 7.2.1についての差分をざっと眺めてみようかなと思います。
先日ね、Rails 7.2がリリースされましたよという話もしたんですけども、
パッチバージョンの7.2.1がもう既にリリースされたということで、
どんな差分があるのかなというのをざっと見てみましょう。
正直、あんまり深掘りしてないので、わからないところも多いですが、
ふわっとね、眺めていこうと思います。
まず、それぞれね、アクティブなんちゃらとか、アクションなんちゃらとか、
いろいろね、Railsはライブラリーが分割というかね、分かれてるんですけど、
ざっとね、変更ないものも含めて読んでいきましょうと。
まず、アクティブサポートは変更が特にありませんと。
何もないわけじゃないけどね。
大きいチェンジログに記載するような内容はありませんと。
アクティブモデルについても大きな変更はありませんと。
アクティブレコードに関しては、
POSグレを使って並列化したテストを行うときに、
ENUMのカラムの検出が不具合があったという感じみたいですね。
その不具合の修正をしていますと。
2項目、ネストされたNILの関連付けをEagerloadできるようにするというのがあります。
これちょっと一周見てみたんですけど、
てかNILの関連付けをロードするってどういう意味だって、
ちょっとパッとよく分かんなかったんですが、
例えば、Eagerloadの記法、シンタックス、
EagerloadだったりIncludersだったりPreloadだったりの記法として、
引数に関連付けのシンボルを記載すると思うんですけど、
例えば、UserHasManyBooksみたいな関連付けだったら、
User.Includers括弧でシンボルのBooksとかって書くじゃないですか。
っていうときに、それ自体は別にいいんだけれども、
例えば、ネストした関連付け、
UserHasManyBooks、
BookHasManyPagesにしようか。
03:06
Pagesは当たり前すぎるから、
Referencesとかにしようか。
BookHasManyReferences、
参考文献をいっぱい持ってるとして、
ユーザーからブックを辿って、
ブックからReferencesを辿ってみたいな感じで書くと、
User.Includers括弧、
Booksコロン、
コロン、
Referencesとかって書いていくわけですよね。
今のBooksコロン、
Referencesみたいなやつは、
ハッシュなんですよね。
引数としてハッシュで渡してるみたいな。
さっきの一つだけの関連付けのときに、
これ難しいな。
日本語で説明するの難しいな。
どうしようかな。
一周に書いてあった例をそのまま読みますね。
その方が多分分かりやすい。
例えば、Includersというメソッドに括弧で、
コロンのA、シンボルのAという関連でカンマで、
ハッシュとしてのキーがBで、
バリューがCみたいな関連付け。
これは伝わるかな。
Includers括弧コロンAカンマ、
BコロンコロンC括弧と字みたいな。
想像できてますかね。
こういう風にIncluders書く必要があるんですよね。
例えば、モデルがAというものを直接、
はずめにはず1Aで、
さらにはず1Bで、
Bというモデルがはず1Cだったというときに、
もともとのモデルのAとBとC全部ロードしたいときに、
Aカンマ、BコロンコロンCみたいな感じで書かなきゃいけないというのがあると。
これがちょっとややこしいんですよね、
記法としてちょっと。
なので、ハッシュじゃないものを先に書かなきゃいけなくて、
今回の例だとAとかを先に書いてあげなきゃいけなくて、
仮に新しい関連付けBというのが増えたときに、
一番末尾にBって書くんじゃなくて、
ハッシュのBコロンコロンCってなってて、
この手前にBというのを書かなきゃいけなくて、
Bじゃない、Dか0というのを書かなきゃいけなくなって、
引数の順番を気にしなきゃいけないんですよね、結構。
というのがめんどくせーなというのが、
06:01
なんとなくわかる。
僕も理解できるなと思ってて。
ニルの話はどこで出てくるんじゃっていうと、
先ほど言ったような例のときに、
全部ハッシュでインクルーターズに渡したいと。
だからBコロンCみたいなハッシュだけじゃなくて、
Aっていうものもハッシュで渡したいと。
全体が引数として全部ハッシュだとして、
AコロンニルカンマーBコロンCみたいな感じで、
Aというのは本当はニルとか書かずに、
Aというのだけ渡せばいいっていう記法なんだけど、
それだと引数の順番とか考えなきゃいけなくてめんどくさいから、
全部ハッシュだとして、
なんだ、AというものをAの代わりに取ってくるんだけど、
そのAの次にAに連なって取ってくるものはありませんっていうのを明記する
みたいなニュアンスでニルって書きたいと。
そうしたら全部引数ハッシュで渡せて、
BコロンコロンCって書いてあった、
元々のハッシュの引数よりも前にAを書かなきゃいけないとか、
そういうのを気にしなくてよくなるから、
ハッシュで書きたいみたいな感じみたい。
すげえ難しい説明になっちゃった。
一周読んでください。
一周は52592っていう一周ですね。
これ読んでもらえれば、
そういうことをやりたいのねっていうのがちょっとわかるかと思います。
日本語で説明するの難関にチャレンジしちゃった。
まあいいや、次行こう。
続いてアクティブレコードの三つ目の変更が、
バッチエニュメレーターを使用したバッチ処理中に、
順序無視の警告が飲み込まれる、
無視されるという問題を修正しました。
順序無視してますよって警告が出るべきなのに、
出なくなっちゃってたっていうことなのかな。
っていうのを修正したよと。
続いてファイバの話。
ファイバのアイソレイティというエグゼキューションステイトを
使用した場合のコネクションプールのメモリに関する修正。
メモリを無駄遣いするみたいな話があったのを修正したよという話みたいですね。
5つ目。
同じモジュール名を持つ関連付けクラスの推測を復元。
同じモジュール名を持つ関連付けクラス。
09:00
ハズワンとかハズメニューとかで同じモジュール名を持つ関連付けクラスの推測。
なんか壊れてたんだ。
多分あれですよね。
ユーザーハズメニューブックスとかってやったら、
ユーザーハズメニューブックスはブックモデルの関連付けだよねみたいなのが分かるよみたいな推測して勝手にやってくれるよみたいなのがなくなってたってこと?
ん? そのことないか。
同じモジュール名を持つ。
ちょっとこれも深掘りしたいとこですが。
だそうです。
あとは6つ目がアクティブレコードベースインスペクトがスキーマ情報の読み込み方法を適切に説明するように修正されたと。
これもイシューを見つけたんで貼っておきました。
これも読んでみてくださいっていう感じ。
あとはイナームのオプションの新しいシンタックスがありますよと。
古いシンタックスに関しては、これは何だ?
ワーニングが出るようになっているのかな?
それともエラーになっちゃうのかしら?
アンダースコアプリフィックスを使用するオプションは新しい構文では使えません。
無効ですって言ってますね。
続いてアクティブレコードエンクリプション、エンクリプテッドアクトリビュートタイプ、シャープタイプ。
エンクリプテッドアクトリビュートタイプのタイプメソッドが実際のキャストタイプを返すようになった。
今までは何を返したんですか?という感じがあるけど。
厳密な型が返ってくるようになった、型というかクラスが返ってくるようになったみたいなことなのかな?
最後、MySQLアダプターに対するオートインクリメントオプションを使用したクリエイトテーブルを修正した。
クリエイトテーブルをするときにオートインクリメントトゥルーフォルスみたいな感じで
ブーリアンで引数渡せたんだけど、そのオプションが効いてないぜ、みたいな感じだったので
ちゃんと効くように修正しました、ということみたいですね。
良かったですね、という感じ。
アクティブレコードは修正が多いですね。
This Week in Railsを毎週読んでいても
12:02
アクティブレコードに関する変更です、というふうにお話しすることがすごく多いので
僕が興味があるというのもありますが
全体の修正の内容としても活発に変更がされているということが見て取れますね。
続いて、ここまでで、今もう12分くらい喋っちゃった。
あと5分くらいで切り上げたいよ。
続いて、アクションビューに関しては変更なし。
アクションパックに関しては
1点、Rack.inputがニルのときに
Requestのインスタンスメソッド、Request Sharp LogPostが
ノーメソッドエラーを発生させる問題を修正したと。
Rack.inputがニルのとき、ノーメソッドエラーを返しちゃってたんだ。
そうなんですね。
ノーメソッドエラーにならないように修正したと。
アクティブジョブは変更なし。
アクティブジョブは変更なし。
アクションメイラー、アクションケーブル、アクティブストレージ、アクションメールボックス
1点も変更がありませんと。
アクションテキストはコンテンツ属性が存在するが値が空の場合に
その属性を削除するように修正したと。
コンテンツ属性が空だったら
コンテンツ属性自体をなくすみたいな感じになったということかな。
なるほどね。
最後、レールタイズ。
こちらは6つ変更があります。
1つ目が非標準アプリケーション定数を持つアプリケーションに対するレールズコンソールの修正。
レールズアプリケーションがappnamespace://applicationという名前であるという前提になってた。
けどこれはデフォルトの値であって別に義務じゃないよって言ってる。
非標準アプリケーション定数ってなんだそもそも。
持つレールズコンソール。
よくわかりません。
なんかデフォルトの値だよっていうものが
これ何だろうね。
レールズコンソール立ち上げた時に
15:02
あなたのアプリケーション名は何ですかっていう時に
これ何が問題になるんですかね。
これの問題があるとしてそんなに大きな問題にならない気もするけど
ちょっとわからんな。
後で詳しく見ておきます。
続いてデフォルトのロッカーファイルを修正したよと
SQLite 3パッケージ全体を含むようになりました。
これまでは不足しているものが何かあったので
レールズDBコンソールを実行した時に
うまく実行できなかったのかな。
不十分でしたって言ってるから
レールズDBコンソールで立ち上げることができなかったのかな。
のかもしれないですね。
続いてAPIモードのアプリケーションで
コロンアップデートというコマンドを実行した時に
パブリックディレクトリを更新しないようにしました。
パブリックディレクトリが更新されるようになっちゃってたのかな。
必要ないよねということになったのかな。
パブリックディレクトリを更新しないようにしました。
みたいですね。
続いて
アップグレード時にブレーキマンがバンドルされていない場合は
Vimthlaブレーキマンを追加しないようにしました。
アップグレードの時にVimthlaブレーキマンが追加されるようになっていたんだけど
それは常に追加されちゃってて
ブレーキマンを使っていないプロジェクトをアップデートした時にも
追加されちゃうからそんなにいらないよという話ですね。
必要な時だけ追加しましょうということですね。
続いてAPIオンリーモードのプロジェクトの場合
PWAのビューとルートを削除したと。
APIモードだからビューはそもそもいらないんだろうというので
普通のビューはもともとなかったんだけど
PWAのビューをRails 7.2.0とかで追加されるようになったのかしら
そのあたりも余計なものが増えちゃってたんで
APIオンリーの場合はこの辺のビューとかルーティングは消しましょうということかな。
18:01
最後、生成されるPumaの設定を簡素化、シンプルにしましたということみたいですね。
これはあれかな、Rails Newした時の話かな、多分。
生成されるPumaの設定。
これ別にRailsアップデートでPumaの設定とか生成されないと思うんで多分。
Rails Newの時の話かなと思います。
よし、じゃあこんなところでざっと眺めてみました。
あまりちょっと深掘りしてないところもあるんで
だいたい自分が毎週読んでいる内容の手応えと同じような
比率的にアクティブレコードとかレールタイズの話って多いので
パッチバージョンの変更とかもそれぐらいの割合でというか
アクティブレコードやレールタイズの変更が多いんだなというのが分かりますね。
パッチバージョンの変更なんでそんなに目立ったすごい大きい変更があるかというとそんなことはないですが
分かりやすくなったりとかちょっとした問題の修正がされているという感じですね。
そんなところで今週は以上とします。
来週はThis Week in Railsの記事が早く公開されている状態であることを祈ったりしますが
どうしても人々が日々時間を塗ってやっていることなんで
別にそれでお金をもらっているわけじゃないでしょうしね。
善意でやってくれている記事の更新だと思うので
しっかりと待ちつつ自分も勉強していきたいなというふうに思いますね。
そんなところで今週は以上とします。
ではまた来週。バイバイ。
20:08

コメント

スクロール