小编MMo*_*ore的帖子

如何测试after_initialize轨道模型的回调?

我正在使用FactoryGirl和Rspec进行测试.如果为零,则模型在init之后设置外键.因此它使用另一个关联的数据.但我怎么测试呢?通常我会使用工厂来创建这个对象,并使用stub_chain作为"self.user.main_address.country_id".但是在创建此对象后,将调用initialize.我没有机会把它留下来.

after_initialize do
  if self.country_id.nil?
    self.country_id = self.user.main_address.country_id || Country.first.id
  end
end
Run Code Online (Sandbox Code Playgroud)

任何的想法?

rspec ruby-on-rails rspec2 rspec-rails ruby-on-rails-3

8
推荐指数
2
解决办法
2165
查看次数

Ruby在虚拟机上运行缓慢,具体取决于虚拟化引擎

我们切换到一个新的开发服务器,并体验到我们的测试套件需要两倍的时间.我们测试了数据库,文件系统等,但这些都非常快,甚至比以前更快.

所以我们写了一个小红宝石基准测试(Fibonacci)并执行了几次(平均值低于以下):

time_start = Time.now
f = lambda { |x| x < 2 ? x : f.call(x-1) + f.call(x-2) }
f.call(35)
time = Time.now - time_start

puts "#{time.round(4)}s needed"
Run Code Online (Sandbox Code Playgroud)

XEN之前的机器:6s

使用OpenVZ后的机器:11,5

两台机器上都安装了rvm的Debian Squeeze( - >编译)ruby-1.9.3-p194.这些机器没有高负荷,内存也可以.

或多或少唯一的区别是虚拟化引擎.在生产中,我们使用VMware ESXi.基准需要大约11s.我们用KVM测试了另一台服务器,基准测试需要2,5s.


  • XEN机器:6s
  • OpenVZ机器:11,5s
  • 使用VMware ESXi的计算机:11s
  • KVM机器:2,5s

那么我们可以在虚拟化中改变什么来使我们的红宝石更快?或者您是否有其他想法可以解决问题?

ruby virtualization performance vmware kvm

5
推荐指数
1
解决办法
786
查看次数