我刚刚更新到Ruby 1.9.1并且几乎所有的rspec都被打破了,给了我一个“无法修改冻结的对象”。甚至来自生成rspec_controller的Rspec示例代码也会失败。
RuntimeError in 'DownloadsController should use DownloadsController'
can't modify frozen object
/usr/local/lib/ruby19/1.9.1/timeout.rb:44:in `timeout'
Generated by the following code:
it "should use DownloadsController" do
controller.should be_an_instance_of(DownloadsController)
end
有人可以帮忙吗?
答案 0 :(得分:6)
你是否使用你并不是试图将某些东西存在为零。
1.8没有被冻结。然而它在红宝石1.9中冻结。
答案 1 :(得分:0)
尝试打开/usr/local/lib/ruby19/1.9.1/timeout.rb
并使用以下内容替换第44行:
begin
return yield(sec) if sec == nil or sec.zero?
rescue => e
puts e.backtrace.join("\n")
raise e
end
虽然这看起来很奇怪,但在某些情况下,我发现这可以为我提供有关问题实际来源的更详细信息。如果您仍然不知道如何解决问题,请在此处粘贴结果,这可能会帮助我们找出问题。