TL;DR Paste this in an initializer or very early in require chain.
# Problem on Ruby 2.7 # > BigDecimal(1).to_s("F") # (pry):1: warning: rb_check_safe_obj will be removed in Ruby 3.0 # This monkeypatch silences it. # TODO: remove when on Ruby 3+ module BigDecimalFormatWarningSuppressor # NOTE: this API comes from ActiveSupport::NumericWithFormat, the last ancestor prepended to # BigDecimal. def to_s(format = nil, options = nil) original_verbosity = $VERBOSE $VERBOSE = nil v = super $VERBOSE = original_verbosity v end end BigDecimal.prepend(BigDecimalFormatWarningSuppressor)
Not sure what the deal is with BigDecimal's string formatting, but we can see in
#to_s's source that it does indeed call
rb_check_safe_obj function and it apparently is whiny.
nil is the same as running with