From: Adiel Mittmann Date: 2011-03-16T12:25:20+09:00 Subject: NoMethodError#message takes very long Hello. I've been noticing a problem for a while in a larger application and today I produced a minimal example, given below. When a method is not found, Sinatra calls NoMethodError#message to display a nice error message, but that is taking VERY long. require 'sinatra' require 'nokogiri' get '/' do @xml = Nokogiri::XML(File.new('baz.xml', 'rb').read()) foo() 'hello' end The file 'baz.xml' can be just a simple file, like a root element containing some thousands of elements. The number of elements is important because, oddly enough, the time taken for the message to be displayed is proportional to the size of the XML file. In my system, with a 3.7 MB file this program takes almost 13 seconds to print the message, but in a larger application the message takes a few minutes to appear. You can try to print the line yourself instead, but that also takes very long: begin foo() rescue ::Exception => boom puts boom.message end I don't know where the error might be. The code above looks too innocent to cause such a weird behavior, and I don't see how either Nokogiri or Sinatra could be involved, although both of them are required to reproduce the problem. I'm using Ruby 1.9.2p180, Nokogiri 1.4.4 and Sinatra 1.2.0. Any help would be greatly appreciated! -- Adiel Mittmann