首页 > 解决方案 > 如何使用 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>>

我该如何解决?

标签: ruby-on-railspry

解决方案


推荐阅读