繁体   English   中英

NoMethodError:BigDecimal 的未定义方法“新”:Class

[英]NoMethodError: undefined method `new' for BigDecimal:Class

最近我更新了 Ruby(2.5.3 到 2.7.1)Ruby on rails(5.2.2 到 6.1.1)版本。

之后,当我运行rspec时,出现此错误:

Failure/Error: require File.expand_path("../../config/environment", __FILE__)
NoMethodError:
  undefined method `new' for BigDecimal:Class
# ./config/application.rb:11:in `<top (required)>'
# ./config/environment.rb:2:in `<top (required)>'

spec_helper.rb 中发生错误如何调试 spec_helper 的代码是:

require File.expand_path("../../config/environment", __FILE__)

如何解决上述错误? 我不确定哪个 gem/file 试图做BigDecimal.new

正如@Tom Lord 在将should matcher 更新为3.1.3 的评论中所建议的那样为我工作

需要config/environment.rb只是加载 rails 和您的应用程序。 很可能您的一个依赖项与 ruby 2.6 不兼容(对于BigDecimal.new的这个确切错误,此处的答案中有解释,但不能保证是唯一的一个),rails 默认情况下会从回溯中过滤宝石。

要调试它,您需要未经过滤的错误跟踪。 为此,您可以包装Bundler.require(*Rails.groups)Application.initialize! (很可能错误将在初始化程序中)通过rescue并直接从异常中获取回溯。

其他方法是升级bundle outdated报告的所有内容,因为您已经冒着跳过多个 rails 版本的风险,并希望所有使用的 gem 都已经发布了兼容版本。

PS。 通常不建议在升级过程中跳过次要导轨和 ruby 版本,因为这样您可以跳过一些重要的弃用并获得意外行为

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM