Class: Fly::RegionalDatabase::DbExceptionHandlerMiddleware
- Inherits:
-
Object
- Object
- Fly::RegionalDatabase::DbExceptionHandlerMiddleware
- Defined in:
- lib/fly-ruby/regional_database.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ DbExceptionHandlerMiddleware
constructor
A new instance of DbExceptionHandlerMiddleware.
Constructor Details
#initialize(app) ⇒ DbExceptionHandlerMiddleware
Returns a new instance of DbExceptionHandlerMiddleware.
27 28 29 |
# File 'lib/fly-ruby/regional_database.rb', line 27 def initialize(app) @app = app end |
Instance Method Details
#call(env) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# 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 |