代码之家  ›  专栏  ›  技术社区  ›  Obromios

如何在rails控制台中用pry回滚失败的事务

  •  0
  • Obromios  · 技术社区  · 6 年前

    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
    

    但它似乎已经停止了在Rails5中的工作。问题似乎是 exception.original_exception 现在引发这个错误

    <NoMethodError: undefined method `original_exception' for #<ActiveRecord::StatementInvalid:0x00007fd2ceb4ba10>>
    

    我怎么解决这个问题?

    0 回复  |  直到 5 年前