ошибка рельсов 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
Я думаю, что это может быть рубиновая ошибка. Это происходит в ирб. рубиновая версия 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
между прочим, первый пример комментария не встречается в ruby ​​​​1.8.7 или 1.8.6 (по крайней мере, в версии REE)   -  person semanticart    schedule 06.10.2009
comment
Я подтвердил, что эта ошибка не связана с рубиновой версией. Тогда это, вероятно, проблема с оборудованием или конфигурацией системы. Как я могу найти это?   -  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)


Для нас эта проблема была вызвана неправильной минорной версией руби. См.: 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