簡體   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