有一件事需要了解
Hash
Ruby中的es是它们不保留顺序。在此之前,我遇到过根据内存中加载的代码更改哈希顺序的问题,甚至添加了
puts "foo"
哈希
在代码的某个深处产生了影响。(注:
哈希
确实保留了1.9.1中的顺序,特别是因为这样的问题,如果我猜的话。)这与您所说的注释掉代码如何使其他代码通过是一致的
YAML
作为
哈希
是的,有理由认为这可能是一个原因。找个地方
哈希
排序(例如
each
)在你的情况下,有所作为可能有意义,也可能没有意义。如果没有别的,这是要记住的。
Fixtures.identify(:mary_publics_phone_number)
而不是
phone_numbers(:mary_publics_phone_number).id
?(另见:
Fixtures documentation
YAML
提供默认值的能力。在此过程中,他们可能会忘记更改夹具的名称。例子:
DEFAULTS: &DEFAULTS
created_on: <%= 3.weeks.ago.to_s(:db) %>
first:
name: Smurf
<<: *DEFAULTS
从OS X迁移到Linux时,我遇到的另一个问题是Ruby版本的细微差异。(即使两者都报告1.8.6,也要记住补丁级别很重要。)过去,Red Hat版本的Ruby在垃圾收集器中存在内存泄漏,有时需要我们重新启动长时间运行的进程。(在我们意识到发生了什么之前,它产生了一些很难找到的bug,因为它们不会在一个
长的
时间。)由于CentOS与Red Hat有关(与RHEL基本相同),我可以想象其他版本差异会导致问题。我知道OS X从未出现过我描述的内存泄漏问题,这使得缩小漏洞变得更加困难。至于1.8.6和1.8.7之间的差异,您必须参考更改日志。请注意,从源代码构建的Ruby版本和打包版本的行为可能不同——我认为内存泄漏问题是由打包Ruby的人引入的。
这些只是几个可能的原因。请汇报您的发现!