kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2022-06-19 - DB の transaction 内に巻き戻せない類の処理を混ぜないようにする #167

Closed kachick closed 2 years ago

kachick commented 2 years ago

ブログとか書き慣れて無いのに当番制だったので 🤮 になりながら https://blog.studysapuri.jp/entry/2018/11/19/ を書いたことが有る。 モチベーション的なのはそこに大体書いたので省略。

普段はなんかあんま興味ないのとか、見たこと有るようなのばっかりが上がってくる GitHub dashboard の Explore repositories で https://github.com/palkan/isolator というのを見て、おぉ?となった。

# HTTP calls within transaction
User.transaction do
  user = User.new(user_params)
  user.save!
  # HTTP API call
  PaymentsService.charge!(user)
end

#=> raises Isolator::HTTPError

# background job
User.transaction do
  user.update!(confirmed_at: Time.now)
  UserMailer.successful_confirmation(user).deliver_later
end

#=> raises Isolator::BackgroundJobError

例の中でも真っ先に決済サービスが入ってるし、多分この作者もなんか辛いことがあったのでは・・・ ということで、使ったことも無いし実装も見てないけどコンセプトに 👍 して置いた。機会が合ったら使ってみよう。