我已经修补了after_commit,所以它适用于我的测试,但它不适用于Jenkins

时间:2011-09-25 10:53:24

标签: ruby-on-rails cucumber jenkins

我在代码中的几个地方使用了after_commit过滤器。为了让我的黄瓜测试工作,我不得不使用补丁 - http://outofti.me/post/4777884779/test-after-commit-hooks-with-transactional-fixtures

在独立运行或在自动测试下运行时,它在本地运行良好。我也尝试在Jenkins下运行测试,但几乎所有测试都失败并出现以下错误消息。

can't dump File (TypeError)
  /var/lib/jenkins/.rvm/rubies/ree-1.8.7-2011.03/lib/ruby/1.8/monitor.rb:242:in `synchronize'
  ./features/support/after_commit_monkey_patch.rb:20:in `transaction'
  ./features/support/after_commit_monkey_patch.rb:18:in `transaction'

任何人都可以帮我弄清楚发生了什么事吗?我很困惑为什么相同的代码在一种情况下工作而不是另一种情况。使用RVM等环境尽可能相同。

谢谢, 格雷姆

2 个答案:

答案 0 :(得分:1)

经过一些搜索(并感谢Andy的线索)它与猴子补丁没有任何关系 - 它只是报告问题。

我将测试集的缓存设置为......

config.cache_store = nil

我把它改成了......

config.cache_store = :dalli_store, { :namespace => "TEST" }

...相反,它现在无故障运行。它仍然没有解释为什么我的测试在本地工作,但没有在Jenkins下使用nil缓存。

答案 1 :(得分:1)

将此修补程序转换为gem test after_commit以获得改进的共同点,并添加测试以查看它适用于所有rails版本