Rails
先日、次の記事を読みました。 HTML: 「JavaScriptなし」で動く最新の多機能確認ダイアログを構築する(翻訳)|TechRacho by BPS株式会社 これを読み、Railsと組み合わせて使ったときはどんな感じの実装になるのか気になりました。 そこで試してみたことか…
日頃Railsアプリを書くときはRSpecによるテストコードも一緒に作成しています。テストコードがあることで安心してプロダクションコードを修正できるためです。 そんな中、テストコードの考え方の1つである、満たすべき性質に対して色々な入力を生成して確か…
前々回、前回と、Redisクラスターを使ったセッションストア設定などを試してきました。 Rails8.1系で、Redisクラスターをセッションストアとして設定してみた - メモ的な思考的な Rails8.1系で、Redisクラスターをセッションストアとキャッシュストアに設定…
Railsではセッションの保存先(セッションストア)を指定できます。 3.2.58 config.session_store | Rails アプリケーションの設定項目 - Railsガイド 以前、セッションストアをRedisにしたときは、スタンドアロンRedisでの利用でした。 Rails7.0系で、キャ…
Railsでは config.filter_parameters を使うことで、ログへ出力したくないパラメータを設定できます。 3.2.34 config.filter_parameters | Rails アプリケーションの設定項目 - Railsガイド ただ、この設定がデフォルトではActiveJobでのジョブ実行時のログ…
以前、JetBrains IDEのWebStormを使ってDevContainerを構築しました。 JetBrains WebStormでDevContainerを起動し、DevContainerの中でCodex CLIを実行してみた - メモ的な思考的な その時はCodexを使えるようにしただけで、DevContainer上でアプリを動かす…
以前、rails routes を便利に扱う IntelliJ Platform Plugin の Railroads を作りました。日頃の開発でも使っていますが、ほぼノーメンテナンスで使い続けてきました。 RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくな…
先日 Railroads という、Rails開発向けのIntelliJ Platform Pluginを作りました。 RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくなったので、代替プラグイン Railroads を作りました - メモ的な思考的な そのプラグイ…
Railsを使っている中で、記事のタイトルのようなことがしたくなりました。 例えば、以下のようなことがしたくなりました。 applesとcolorsという2テーブルがある applesテーブルには以下の3列があり、いずれもcolorsと関連を持たせたい 列について 果実の色 …
Railsを使っている中で、「トランザクションの中だとモデルのid列はいつ設定されるのか」が気になったことから、確認してみたときのメモを残します。 目次 環境 動作確認 余談:Railsのバージョンにより、トランザクション内での return 等の挙動が変わる ソ…
Railsをproductionモードで動かしている時、ログに I, [*** #237177] INFO -- : [95c95a65-608b-45d3-aa02-bcf61950e7c2] Completed 204 No Content in 1ms と、 [95c95a65-608b-45d3-aa02-bcf61950e7c2] のようなHTTPリクエストを識別できるようなタグがつ…
以前、factory_botの traitを使ったことがありました。 Rails + factory_botで、sub factoryやtrait・callbackを使って関連データを生成してみた - メモ的な思考的な そんな中、 rspec-parameterized を使ってテストを書くときに、動的に trait を指定してデ…
gem rspec-parameterized は、RSpecでパラメタライズドテストを書くときに便利です。 https://github.com/tomykaira/rspec-parameterized 最近だと、 table syntaxを使っていない場合は rspec-parameterized-core を使うことで native extensionへの依存をな…
最近「オブザーバビリティ(Observability)」が気になっていたので、オライリーの「オブザーバビリティ・エンジニアリング」を読みました。 O'Reilly Japan - オブザーバビリティ・エンジニアリング その本の7章ではOpenTelemetryが紹介されていました。 Open…
Railsには Concern と呼ばれる関心事を分離する機能があります。 我々はConcernsとどう向き合うか - おもしろwebサービス開発日記 そのConcernをモデルに組み込もうとした時、 モデルで include するか prepend するか Rails API: ActiveSupport::ConcernとM…
Rails + RSpecにて、Rake Taskのテストコードを書く機会がありました。 ただ、引数が必要なRake Taskのテストを書くときに悩んだことがあったため、メモを残します。 目次 環境 引数なしのRake Taskをテストする 引数ありのRake Taskをテストする [] を使っ…
Rubyでは Hash#merge を使うことで、2つのハッシュをマージできます。 Hash#merge (Ruby 3.2 リファレンスマニュアル) 2つのハッシュでキーが異なる場合は、それぞれのキーを持つハッシュへとマージされます。 h1 = { name: 'foo' } h2 = { color: 'red' } h…
前回に続き、RSpecのchangeマッチャに関する記事です。 値の変化を検証する時は change マッチャが便利です。 ただ、「こんな時どうするんだっけ」と調べることが多かったことから、 change マッチャまわりをいろいろ試してみたときのメモを残します。 目次 …
RSpecの change マッチャを使うと、処理前後における値の変化を検証できます。 https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/change/ 例えば # == Schema Information # # Table name: favorites # # id :integer not null, prim…
ハッシュに対してドットアクセスできる機能を追加しようと調べたところ、Rubyの標準ライブラリに OpenStruct がありました。 ためしに使ってみたところ、以下のようになりました。 require 'ostruct' o = OpenStruct.new({foo: 'bar'}) puts o.foo #=> bar …
以前、Railsのキャッシュストアとセッションストアとして memcached を使ったことがありました。 Rails6.1で、セッションをキャッシュとは別のmemcachedへ保存する - メモ的な思考的な そんな中、Redisを使って試してみたことから、メモを残します。 目次 環…
RailsのActiveRecordにて、SQLのJOIN句やWHERE句の条件を記載する場合、 JOIN句 joins() や eager_load() などのメソッド 13 テーブルを結合する | Active Record クエリインターフェイス - Railsガイド WHERE句 where() メソッド 3. 条件 | Active Record …
Rails + RSpec + factory_bot にて、あるモデルの関連データを生成する方法を調べたところ、factory_botのGETTING_STARTEDにいろいろな方法が記載されていました。 https://github.com/thoughtbot/factory_bot/blob/main/GETTING_STARTED.md そこで、GETTING…
Railsを使ったソースコードを眺めていたところ、モデルのメソッドにて def foo !!bar&.baz end というコードがありました。 どのような挙動になるのか気になったので、試してみた時のメモを残します。 目次 環境 モデル構造 挙動確認 否定(!)や二重否定(!!)…
RailsでActiveRecordを使ってDBからレコードを取得するときに、以下を考慮した昇順・降順ソートで迷ったことがあったため、メモを残します。 取得するタイミング データ取得時 (SQL発行時にソート) データ取得後 (Rubyのarrayになってからソート) ソートキー…
以前、RailsのActiveRecordにて、 eager_load を使って 子側が存在しない場合は結果に含めずに抽出する 子側が存在しなくても、結果に含めて抽出する をしました。 Railsで、eager_loadのLEFT OUTER JOINにて、WHERE句とON句のそれぞれで絞り込みしてみた - …
Railsでは、標準で用意されているモデルのバリデーションの他に、カスタムバリデーションメソッドを作成することで、独自のバリデーションを行えます。 6 カスタムバリデーションを実行する | Active Record バリデーション - Railsガイド そんな中、「カス…
Railsにはタイムスタンプカラム( created_at / updated_at )があり、各カラムは データ作成時 created_at と updated_at が設定される データ更新時 updated_at が更新される という挙動になります。 2.2 スキーマのルール | Active Record の基礎 - Railsガ…
Rails + ロールでの認可制御を調べたところ、以下のページに認可制御のgemがまとまっていました。 Category: User Authorization - The Ruby Toolbox まずは一番Githubのstarが多いgemからみてみようということで、 Pundit をさわってみることにしました。 v…
Rails + React + OpenAPI な環境で、クエリパラメータに配列を指定することがありました。 ただ、実装するまでにいろいろ調べたことがあったため、メモを残します。 目次 環境 わかったこと Railsでは ids[]=1&ids[]=2 な書式のクエリパラメータを受け取れる…