2009-10-05 28 views
1

我有一個rails應用程序(導軌版本2.1.0),今天我發現了一個非常奇怪的錯誤。rails number_to_currency bug?

貨幣值(mysql精度8和2的十進制小數列)是86.02。但是,number_to_currency方法返回「$ 86.20」。這隻發生在生產服務器中。我的開發服務器正確返回。生產服務器是紅帽子,dev是Ubuntu的。

這也在控制檯中得到了證實。

>> p.deposit_total.to_s 
=> "86.02" 
>> helper.number_to_currency p.deposit_total 
=> "$86.20" 

這是已知的問題嗎?

謝謝。

山姆

+0

我縮小的問題。 b = BigDecimal(「86.02」) b.to_f => 86.2 這隻發生在生產服務器上。爲什麼會發生這種情況,我該如何解決? – 2009-10-05 19:43:18

+0

我認爲這可能是ruby bug。這發生在irb中。紅寶石版本是1.8.5。 – 2009-10-05 19:54:09

+0

這可能只是BigDecimal的錯誤。 irb(main):023:0> BigDecimal.new(「1.0234」) =># 內部表示錯誤。 – 2009-10-05 20:17:11

回答

0

對於我們這個問題是由錯誤的小版本的紅寶石造成的。請參閱:https://rhn.redhat.com/errata/RHBA-2010-0012.html

服務器的問題:

[[email protected] ~]$ rpm -qa | grep ruby 
ruby-libs-1.8.5-5.7 
ruby-rdoc-1.8.5-5.7 
ruby-1.8.5-5.7 
ruby-devel-1.8.5-5.7 
ruby-irb-1.8.5-5.7 

服務器沒有問題:

[[email protected] ~]$ rpm -qa | grep ruby 
ruby-1.8.5-5.5 
ruby-ri-1.8.5-5.5 
ruby-irb-1.8.5-5.5 
ruby-rdoc-1.8.5-5.5 
ruby-libs-1.8.5-5.5 
ruby-devel-1.8.5-5.5