2010-08-14 6 views
2

Où est définie la méthode "megabytes" pour les fixnums? Pour autant que je comprenne, ce n'est pas une méthode de noyau de rubis, puisque son seul disponible dans les rails.La méthode .megabytes de Rails renvoie une valeur incorrecte

ruby -e 'puts 5.megabytes' 

dans des rails par défaut l'installation, il retourne:

Loading development environment (Rails 2.3.8) 
>> 5.megabytes 
=> 5242880 

À un certain moment dans mon application quelque chose de mal arrive, et méga-octets renvoie désormais des valeurs erronées ...

Loading development environment (Rails 2.3.8) 
>> 5_000_000 
=> 5000000 
>> 5.megabytes 
=> 5120 
>> 5.kilobytes 
=> 5 
>> 5.bytes 
=> 5 

Je devine une gemme a fait quelque chose de très mal, mais c'est dur pour moi de le suivre à la source maintenant.

Une idée pour savoir où se trouve le problème?

Répondre

6

Le problème était dans la gemme de Dieu, qui écrasait ces méthodes en numérique pour une raison inconnue. Cela pourrait facilement casser l'application, car j'ai beaucoup de validations basées sur ces méthodes. exécuter

Il n'y a pas besoin en général d'inclure Dieu dans l'application elle-même, mais certaines personnes pourraient afin d'automatiser le déploiement ...

J'ai lu quelques informations sur la pierre précieuse, et les gens suggèrent généralement il est tout à fait cassé en général en raison de beaucoup de fuites de mémoire. Des suggestions à ce sujet?

1

Ouch. Maintenant, je sais pourquoi mes 100.megabytes que j'essayais de rendre dans un uploader Flash se sont cassés, parce qu'il acceptait des octets et pas des kilo-octets. Il s'est cassé après que j'ai ajouté la gemme de Dieu au Gemfile. C'est TRÈS dangereux en effet.

Une alternative à Dieu est Bluepill. Bluepill a été créé par frustration avec Dieu. Voici un bon résumé de pourquoi Bluepill a été créé http://asemanfar.com/Why-We-Wrote-Bluepill bien sûr, il est disponible en tant que gemme, donc vous pouvez l'utiliser à la place. Le référentiel GitHub est également lié dans l'article.

Je suis en train d'envisager de faire l'interrupteur. Merci pour l'information! Sur le sujet, puisqu'il s'agit du convertisseur d'octets, mais comme il est lié à la surveillance des processus et Dieu est la cause, il pourrait être utile de ne pas trébucher sur ce problème.

Espérons que cela aide.

+0

J'ai déménagé à bluepill peu après avoir eu ce problème. :-) – mdrozdziel

Questions connexes