KATUUUNs blog

プログラミング学習で得た知識をアウトプットするためのブログです

学習36日目 sleepについて

こんにちはKATUUUNです。
オリンピックでは陸上競技を主に見ていました。男子4✖️100mリレーで日本代表のバトンミスは本当に胸が痛みました。まるで自分があの場にいるかのような錯覚をしてしまい、泣きそうになりました。

f:id:KT34309349:20210809194708j:plain

オリンピックの終わりと同時に私は新たな開発を始めました。フリマアプリの開発がひと段落して、今度はオリジナルアプリを開発してしていきます。要件定義やDB設計など、事前の準備をしっかりしてから取り掛かりたいです。

今日はフリマアプリの振り返りとしてsleepについて語りたいと思います。

背景
商品の購入機能の際、モデル単体テストコードを記載して、テストコードを実施して見たところ、

ActiveRecord::StatementInvalid:
Mysql2::Error::ConnectionError: Lost connection to MySQL server during query

のエラーが発生しました。

原因
DBや外部サイトなどにアクセスするときに、連続でアクセスすると負荷がかかりすぎてしまうようです

対策
ここでsleepを使います。sleepは、一定時間、rubyプログラムの実行をストップするメソッドです。一定時間経過後、次の行から実行が再開します。

購入情報のテストコードファイル

RSpec.describe PurchaseAddress, type: :model do
  describe '購入情報の保存' do
    before do
      user = FactoryBot.create(:user)
      display = FactoryBot.create(:display)
      @purchase_address = FactoryBot.build(:purchase_address, user_id: user.id, display_id: display.id)
      sleep 0.1
    end

以上です。ありがとうございました。