ruby-on-rails - 如何使用 pry 在 Rails 控制台中回滚失败的事务
问题描述
active_record
在加载的rails控制台中尝试新查询时pry
,如果查询导致异常,我经常必须停止控制台并重新启动它,否则所有查询都会导致异常。我确实有一些似乎可以解决此问题的代码:
# .pryc
Pry.config.exception_handler = proc do |output, exception, _pry_|
output.puts "#{exception.class}: #{exception.message}"
output.puts exception.backtrace.first
if exception.instance_of?(ActiveRecord::StatementInvalid) && exception.original_exception.is_a?(PG::Error)
output.puts 'Rolling back transaction and starting a new one!'
connection = ActiveRecord::Base.connection
connection.rollback_db_transaction
connection.begin_db_transaction
end
end
但它似乎已停止在 rails 5 中工作。问题似乎是exception.original_exception
现在引发了此错误
<NoMethodError: undefined method `original_exception' for #<ActiveRecord::StatementInvalid:0x00007fd2ceb4ba10>>
我该如何解决?
解决方案
推荐阅读
- php - 使用不同的变量加载相同的视图两次
- pyspark - 如何读取 pyspark 提取的一个文件中的多个嵌套 json 对象到 Azure databricks 中的数据框?
- c++ - 声明一个全局变量而不在 C++ 中初始化
- c# - HttpPostAttribute 中 Name 参数的作用是什么
- c# - .NET Core - 库中未包含/编译的图像资源
- python - 如何仅在事件中心接收最近的数据
- python - 使用 Pool().apply_async 进行大型计算期间的多处理死锁
- java - 有没有办法使用分段上传(Java 高级 API)将使用“java.util.zip”提取的 zip 文件上传到 AWS-S3
- java - 如何保存从磁盘文件java上的HTTP GET响应获取的文件
- c# - 可以将对象的深层复制到 C# 中已经存在的对象