2009-10-05 6 views
1

J'ai une application rails (rails version 2.1.0) et aujourd'hui j'ai trouvé une erreur très étrange.rails numéro_à_currency bug?

Une valeur monétaire (colonne décimale mysql avec précision 8 et échelle 2) est 86,02. Cependant, la méthode number_to_currency renvoie "$ 86.20". Cela se produit uniquement dans le serveur de production. Mon serveur de dev retourne correctement. Le serveur de production est red hat et dev est ubuntu.

Ceci est également confirmé dans la console.

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

Est-ce un problème connu?

Merci.

Sam

+0

Je PRECISEE le problème. b = BigDecimal ("86,02") b.to_f => 86,2 Cela se produit uniquement sur le serveur de production. Pourquoi cela arrive-t-il et comment puis-je le réparer? –

+0

Je pense que cela pourrait être bug de rubis. Cela arrive en IRB. La version de ruby ​​est 1.8.5. –

+0

Cela pourrait être seulement un bug BigDecimal. irb (principal): 023: 0> BigDecimal.new ("1.0234") => # La représentation interne est erronée. –

Répondre

0

Pour nous, ce problème a été causé par la mauvaise version mineure de rubis. Voir: https://rhn.redhat.com/errata/RHBA-2010-0012.html

Server avec le problème:

[[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 

serveur sans problème:

[[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