class Fly::RegionalDatabase::DbExceptionHandlerMiddleware
Public Class Methods
new(app)
click to toggle source
# File lib/fly-ruby/regional_database.rb, line 27 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/fly-ruby/regional_database.rb, line 31 def call(env) @app.call(env) rescue PG::ReadOnlySqlTransaction, ActiveRecord::StatementInvalid => e if e.is_a?(PG::ReadOnlySqlTransaction) || e&.cause&.is_a?(PG::ReadOnlySqlTransaction) RegionalDatabase.replay_in_primary_region!(state: "captured_write") else raise e end end