грешка в релсите number_to_currency?

Имам приложение за rails (rails версия 2.1.0) и днес открих много странна грешка.

Паричната стойност (десетична колона на mysql с точност 8 и мащаб 2) е 86,02. Методът number_to_currency обаче връща "$86,20". Това се случва само в производствен сървър. Моят сървър за разработка се връща правилно. Производственият сървър е red hat, а dev е ubuntu.

Това се потвърждава и в конзолата.

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

Това известен проблем ли е?

Благодаря.

Сам


person Sam Kong    schedule 05.10.2009    source източник
comment
Стесних проблема. b=BigDecimal(86.02) b.to_f =› 86.2 Това се случва само в производствения сървър. Защо се случва това и как да го поправя?   -  person Sam Kong    schedule 05.10.2009
comment
Мисля, че това може да е ruby ​​бъг. Това се случва в irb. версията на ruby ​​е 1.8.5.   -  person Sam Kong    schedule 05.10.2009
comment
Това може да е само грешка в BigDecimal. irb(main):023:0› BigDecimal.new(1.0234) =› #‹BigDecimal:b7efb05c,'0.1234E1',8(12)› Вътрешното представяне е грешно.   -  person Sam Kong    schedule 06.10.2009
comment
fwiw, първият пример за коментар не се среща в ruby ​​1.8.7 или 1.8.6 (поне REE версията)   -  person semanticart    schedule 06.10.2009
comment
Потвърдих, че тази грешка не е свързана с ruby ​​версията. Тогава вероятно е проблем с хардуера или системната конфигурация. Как мога да го намеря?   -  person Sam Kong    schedule 06.10.2009
comment
Използването на ruby-debug може да бъде полезно в този случай за преминаване през кода.   -  person Tony Pitale    schedule 06.10.2009
comment
Истинската корекция на това може дори да изисква известно копаене в основния код на Ruby. Предполагам и b = BigDecimal("86.02") b.to_s # => "86.2"?   -  person Peter Wagenet    schedule 06.10.2009


Отговори (1)


За нас този проблем беше причинен от грешната второстепенна версия на ruby. Вижте: https://rhn.redhat.com/errata/RHBA-2010-0012.html

Сървър с проблем:

[auser@aserver01 ~]$ 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

Сървър без проблем:

[auser@aserver02 ~]$ 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
person Sam    schedule 08.07.2010