带有rspec的Ruby 1.9.1"无法修改冻结对象"

xto*_*xto 5 ruby rspec

我刚刚更新到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
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

小智 6

你是否使用你不是试图存在零的东西.

1.8毫升没有冷冻.然而它在红宝石1.9中冻结.


Pet*_*net 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
Run Code Online (Sandbox Code Playgroud)

虽然这看起来很奇怪,但在某些情况下,我发现这为我提供了有关问题实际根源的更详细信息。如果您仍然不知道如何解决问题,请将您的结果粘贴到此处,也许它会帮助我们找到问题。