According to the docs, I believe the example below with Ruby 1.9.2 should work in the same way as Ruby 1.9.3, but it doesn't. Given a file test with the contents hello:
Ruby 1.9.3p484:
File.read "test", 4, :mode => 'rb'
# => "HELL"
Ruby 1.9.2p320
File.read "test", 4, :mode => 'rb'
# => TypeError: can't convert Hash into Integer
It seems like Ruby 1.9.2 and 1.9.3 differ in their way of handling optional args to File.read. Why? I cannot figure out where it's stated that this change was made.

It seems like Ruby 1.9.2 also expects the offset if you specify the length (in related news, I can also reproduce this on 1.9.2p320 but not on 1.9.3p484). It is not clear to me from the documentation and the C code why this would be required on 1.9.2 but it shouldn't be too big a problem here.
You can just use pass the offset as
niland it will work fine on 1.9.3 and 1.9.2.