How to crash Ruby

3rd Jan 2007 | Tags: programming ruby
1
2
3
4
5
6
7
8
9
10
11
class BrokenError < StandardError
  def backtrace
    raise(StandardError.new)
  end
end

begin
  raise BrokenError.new
rescue e
  puts 'rescued'
end

Because of the exception in the backtrace generation, processing just dies. If you have an at_exit block, it will still be run, so I suppose I’m not really crashing the ruby interpreter, I suppose, but it comes close.

Found this one out migrating a rails app from 1.1.6 to 1.2. Instead of doing this:

1
render 'controller/action'

the deprecation warning suggests the following:

1
render :file => 'controller/action'

Unfortunately, this causes the error if you’re still trying to run in 1.1.6. A more complete fix is to make sure to add use_full_path to the render call to prevent an older TemplateError from horking, like so:

1
render :file => 'controller/action', :use_full_path => true