![](/img/trans.png)
[英]Cannot start rails server: undefined method `yaml_as' for BigDecimal:Class (NoMethodError)
[英]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.