Rails .megabytes方法返回错误的值

时间:2010-08-14 12:39:00

标签: ruby-on-rails ruby

定义了fixnums的“兆字节”方法在哪里?据我所知,它不是核心ruby方法,因为它只能在rails中使用。

ruby -e 'puts 5.megabytes'

在默认的rails安装中,它返回:

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

在我的应用程序的某个时刻发生了一些错误,现在兆字节返回了错误的值......

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

我猜一些宝石做了一些非常错误的事情,但我现在很难跟踪它。

知道如何找出问题所在的位置吗?

2 个答案:

答案 0 :(得分:6)

问题出现在上帝宝石中,由于未知原因,它在Numeric中覆盖了这些方法。这很容易打破应用程序,因为我有很多基于这些方法的验证。跑

通常不需要在应用程序本身中包含god,但有些人可能为了自动部署...

我阅读了一些关于gem的信息,人们普遍认为由于大量的内存泄漏,它一般都很破碎。有关于此的任何建议吗?

答案 1 :(得分:1)

哎哟。现在我知道为什么我的100.megabytes试图渲染到Flash上​​传器中,因为它接受字节而不是千字节。在我将神宝石添加到Gemfile后它崩溃了。这确实非常危险。

上帝的另一种选择是Bluepill。 Bluepill是出于对上帝的挫败而创造的。以下是Bluepill创建原因http://asemanfar.com/Why-We-Wrote-Bluepill的一个很好的总结,当然这可以作为gem使用,所以你可以使用它。 GitHub存储库也链接到文章中。

我正在考虑进行切换。谢谢你的抬头!

关于主题不完全完全,因为它涉及字节转换器,但由于它与进程监控有关,而上帝是原因,除了偶然发现这个问题之外,它可能是有用的。

希望这有帮助。