私はRails Big Decimalに制限を設定する初期化子を持っています
BigDecimal.limit(20)
これが実行され、制限が適切に設定されているようです。
しかし、Webリクエストが来たとき(私はPumaを使用しています)、リクエストを処理するスレッドに制限が設定されていないようです。制限はデフォルトの0に設定されています。
他に制限を設定する必要がある場所はありますか?
再現したい場合:
新しいRailsアプリを作成し、制限を設定するイニシャライザを追加します
BigDecimal.limit(20)
puts "*** Set #{BigDecimal.limit}"
あなたのアプリケーションコントローラに追加
before_action :check_big_decimal
def check_big_decimal
puts "***request #{BigDecimal.limit}"
end
サーバーを起動し、ページを更新してリクエストを行います
20に設定されているはずですが、リクエストが入ってくると0に戻ります。
ハックでお勧めできない方法は、サルにクラスにパッチを当てることです。これを初期化子に追加できます
class BigDecimal
def self.limit(val = 25)
25
end
end
問題は、本当にどこでも25に制限したいですか?はいの場合は、これをラストリゾートとして試すことができます。その値をハードコーディングすることの副作用についてはわかりません(そしてそのメソッドをオーバーライドすることはまったくできません)。