有一件事要认识到
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
还要记住的一点是:您可能没有唯一的设备名称。为了以防万一,我会查一下副本。我认识很多人只是复制和粘贴装置,因为他们不知道
山药
提供默认值的能力。在这个过程中,他们可能会忘记更改夹具的名称。例子:
DEFAULTS: &DEFAULTS
created_on: <%= 3.weeks.ago.to_s(:db) %>
first:
name: Smurf
<<: *DEFAULTS
从OSX到Linux的另一个问题是Ruby版本的细微差别。(即使这两个报告都是1.8.6,请记住补丁级别很重要。)以前红帽版本的Ruby在垃圾回收器中有内存泄漏,这要求我们偶尔重新启动长时间运行的进程。(在我们意识到发生了什么之前,它造成了一些很难发现的错误,因为它们不会发生在
长的
时间。)因为CentOS与RedHat相关(基本上与Rhel相同),我可以想象其他版本的差异会导致问题。我知道OSX从未遇到过我描述的内存泄漏问题,这使得缩小缺陷变得更加困难。至于1.8.6和1.8.7之间的差异,您必须参考变更日志。请注意,从源代码构建的Ruby版本和打包版本的行为可能不同——我认为内存泄漏问题是由打包Ruby的人引入的。
这只是几个可能的原因。请把你的发现报告回来!