1. tanaken on Rails
  2. #006: Rails Foundation, File..
2024-02-10 08:26

#006: Rails Foundation, Filename JSON-encoding, QueryLogs

00:07
こんにちは、tanakenです。 第6回かな、のtanaken on Railsを始めていきます。
今週のThis Week in Railsでは、いくつかプレリクエストが紹介されていましたが、
そのうち3つ紹介したいと思います。 3つと言ったんですけど、そのうちの1個目は
1つ目はプレリクエストというか、ちょっとお知らせみたいなものですね。
それは何かというと、Rails Foundation Docsというタイトルでリンクが貼られています。
これ何かというと、Rails Foundationというラベルが付いたプレリクエストの一覧をリンクで貼っていると。
何かというと、既存のRailsのドキュメントを改善するためのチームが結成されたそうです。
レビューのためにプレリクエスト自体は1週間ほどオープンにしていくので、
皆さんコメントしてね、みたいなことが書かれていました。
現時点では、ActiveJobのPerformAllLaterというメソッドについてのドキュメントだったり、
アクションテキスト、アクションメールボックスについてのドキュメントの改善についてプレリクエストが出されているという形ですね。
何かドキュメント改善チームが作られたということで、いいですねというところですね。
続いて2点目、プレリクエストの紹介で、タイトルがFixJSONEncodingActiveStorageFilenameというタイトルです。
こちらはアクティブストレージに関する変更です。
ActiveStorageFilenameというクラスがあるんですけど、
このクラスのオブジェクトをJSONエンコードする際に無効なJSONが生成されてしまう問題があったと。
これはファイル名が括られていないために無効なJSONになっていたと。
具体的にどんな対応をしたかというと、
ActiveStorageFilenameクラスにあるToJSONメソッドを削除するという対応で解決しています。
もともとToJSONメソッドでは、メソッドの中で2S、ストリングにするという処理をしていたという感じだったんですが、
このメソッドを削除することで、
アクティブサポートのToJSONWithActiveSupportEncoderというクラスの実装に任されるようになったということですね。
03:13
これの実装に任されるとファイル名がクオートで括られるようになると。
このToJSONに関しては、昔僕自身がブログでまとめたものがあって、
それはこのActiveStorageFilenameに関する話ではないんですけど、
結局ToJSONメソッドがどういう処理をたどって、処理を行われるのかというのを追いかけたブログなんで、
それを読んだら大体やっていることが分かりました。
詳しいところは今回のショーノートに、スクラップボックスにメモを書いておくんで、
興味があれば見ておいてくださいぐらいで、そんなに丁寧な説明はしてないですけどね。
やったこのプロジェクトでは、ToJSONメソッドを消すことで、
結局アクティブサポート側の処理に寄せると、
結果的にクオートでファイル名が括られるようになるということを言っておりますね。
最後に3点目、タイトルがSupport Source Location Tag Option for Query Log Tagsというタイトルです。
こちらはアクティブレコードに関する変更です。
アクティブレコードコロンコロンクエリログズというモジュールがあります。
前提知識として。
この絵は何かというと、アプリケーションが実行するSQLに関する情報を記録して、
デバッグやパフォーマンスのチューニングに活用するためのものです。
Config SLA Application RBで設定をトゥルーにすることで有効化できると。
何かというと、Config.ActiveRecord.QueryLogTagsEnabledというオプションをトゥルーに指定することで有効化できます。
こちらの機能では、デフォルトで次の4つの情報が記録されるようになると。
SQLに関する情報が記録されるようになると。
何かというと、アプリケーション名、コントローラー名、アクション名、ジョブ名。
この4つがデフォルトで記録されるようになるということですね。
ただ、このクエリログズは、本番環境で使うのは慎重に検討する必要があると。
何でかというと、本番環境でこの機能を有効にすると、ログが大量に作られて、
パフォーマンスに影響を与える可能性があるということが言われています。
06:06
今回のプレリクエストでどんな変更が加わったのかというと、
このQueryLogTagsの中にソースロケーションというタグも指定できるようになりました。
このソースロケーションというのは、その名の通りですけど、
このクエリを実行している、このクエリを呼んでいるソースコードの場所、
ファイル名とファイル番号だと思うんですけど、が記録されるようになったということですね。
具体的なオプションの指定としては、さっきのConfig.ActiveRecordQueryLogTags、
さっきQueryLogTagsEnabledというのをトゥルーにするというふうに言ったんですけど、
Config.ActiveRecordQueryLogTagsというオプションもあって、そこにタグを記載するんですよね。
デフォルトだとアプリケーション、コントローラー、アクション、ジョブの4つなんですけど、
そこにソースロケーションというのも追加できるようになったよと。
これを追加すると、ソースコードの位置が記録されるようになると。便利だねということですね。
ただ、ソースコードの位置の情報を計算するのには、もちろん処理のコストがかかるので、
本番環境で利用するには、さらに慎重に判断する必要があると。それはそうですよね。
この注意事項自体は、ActiveRecordのChangeLog.mdのマークダウンのファイルにも明記されていましたという形ですね。
そんなところで、今回は3つ紹介しました。
1つ目が、Railsのドキュメントを改善するチームができたよという話題。
2つ目が、ActiveStorageのファイルネームのJSONエンコーディングに関する話。
3つ目が、ActiveRecord Query Logsでソースコードの位置も記録できるようになったよというお話をしました。
そんなところで、今週のTanaKen on Rails、終わりたいと思います。
ではでは、また来週。バイバイ。
08:26

コメント

スクロール