あきろぐ

いろいろめもするよ🐈🐈🐈

Rails

FactoryBotでデータを大量に作成する2パターンの速度比較をしてみた

背景 Rspecでテストを行う際にテストデータが大量に必要だったので、create_listを使ってデータ作成していましたが、create_listを使うよりbuild_listしたものをbulk_importした方が高速化できると教えてもらいました。 bulk_importはActiverecord-Importと…

Railsで時間をJSON形式の文字列に変換するときに気をつけたいこと

前提 Railsでcreated_atを含む文字列をJSONに変換したものを受け取った後、そのJSON文字列からcreated_atを取り出し、DBにデータを取りに行くような実装がされていたとします。 その際、想定通りのデータがDBから取得できずに困ったので、その調査&原因をま…

FactoryBotでインスタンスを一気に作成するときに値をユニークにしたい

create_listは、複数のインスタンスを作成するときに便利なメソッドですが、作成されるインスタンスのテストデータは同じになってしまいます。 create_list(:article, 3, title: 'test', description: 'test') createメソッドで愚直に1つずつインスタンスを…

【Rails】カラムの中身を別のカラムにコピーする3パターン

1つ目 あるテーブルに新しくカラムを追加し、既存のカラムデータを新規カラムにコピーする ModelName.update_all(new_column = old_column) 2つ目 テーブルサイズが大きい場合、レコードを分割して処理を実行することも可能 ModelName.in_batches(of: 10000)…

PostgreSQLを入れ直したらrails db:prepareできなくなった

何が起きたのか PostgreSQLが立ち上がらなくなってしまったので、再度インストールし直した後rails db:prepareを実行したところ、以下のようなエラーが発生した。 rails aborted! LoadError: dlopen(/Users/xxx/.rbenv/versions/3.1.0/lib/ruby/gems/3.1.0/g…