Jacob Maine's blog



Jacob MaineJacob Maine
SF Standup 3/4-3/5/2010
edit Posted by Jacob Maine on Friday March 05, 2010 at 09:25AM

Help

"What's the best way to test that an array contains another array?"

A custom matcher using array - other_array was suggested.

Interesting

The team that was having problems with Prototype response codes found a partial solution.

They sometimes call abort() on the request which triggers the callbacks with a 0 response code. They found that if they set transport.onreadystatechange = function() {}; before calling abort() they could skip the callbacks, and manually call whatever clean-up they needed. That Prototype interprets 0 as a success still sounds strange.

Jacob MaineJacob Maine
SF Standup 3/3/2010: Disappearing response codes
edit Posted by Jacob Maine on Wednesday March 03, 2010 at 09:23AM

A Palm project uses Prototype for their ajax calls. They noticed that Prototype casts low-level errors (network errors, etc.) to a response code of 0. Unfortunately, the rest of Prototype interprets 0 as "success". When they hacked Prototype to interpret 0 as a failure, another darker problem emerged. In some cases, for example if they send two requests in rapid succession, even if both responses have 200 in their headers, Prototype will report the second's response code as 0. So, 0 can indicate success or failure in different scenarios.

Jacob MaineJacob Maine
SF Standup 3/2/2010: Rubyconf Proposal workshop
edit Posted by Jacob Maine on Tuesday March 02, 2010 at 09:19AM
  • Reminder: tonight we're hosting a workshop to help you polish your RailsConf presentation proposal. Sign up or just drop in. Thanks to our own Sarah Mei for coordinating and running the workshop.
  • "Anyone familiar with the new RubyMine test runner? We'd like to integrate Jasmine tests, so we can run headless JS tests in the IDE."

Jacob MaineJacob Maine
SF Standup 3/1/2010: JRuby skips ensure blocks when killed
edit Posted by Jacob Maine on Monday March 01, 2010 at 09:18AM

When you kill a JRuby process (e.g. with a SIGINT) you can't bank on ensure blocks being executed. Of course, this is worrisome - file handles and other connections won't be closed. The problem boils down to this example:

$ cat kill_me.rb 
begin
  sleep
ensure
  puts 'executed ensure'
end
$ 
$ ruby -v
ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0]
$
$ ruby kill_me.rb 
^Cexecuted ensure
kill_me.rb:2:in `sleep': Interrupt
    from kill_me.rb:2
$
$ jruby -v
jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_13) [x86_64-java]
$
$ jruby kill_me.rb 
^C$