I'm running ruby 1.8.7. If I 'require' a file, and it fails, the program
just crashes with message like so:
no such file to load -- whatsit
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
from (irb):1
or (if if I turn auto_gem off):
./main.rb:3:in `require': no such file to load -- whatsit (LoadError)
from ./main.rb:3
It seems like I should be given the chance to do something else if a
require fails, such as print an more understandable message to the
console or put something in a log. But it seems that ruby does not
return from the 'require' call, or allow catching an exception. Am I
right? And why is this?
begin
require "whatsit"
rescue LoadError => e
puts "Failed to load whatsit:"
puts e.message
puts "Please install it."
exit 1
end
···
Am 30.01.2011 07:07, schrieb Terry Michaels:
I'm running ruby 1.8.7. If I 'require' a file, and it fails, the program
just crashes with message like so:
no such file to load -- whatsit
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
from (irb):1
or (if if I turn auto_gem off):
./main.rb:3:in `require': no such file to load -- whatsit (LoadError)
from ./main.rb:3
It seems like I should be given the chance to do something else if a
require fails, such as print an more understandable message to the
console or put something in a log. But it seems that ruby does not
return from the 'require' call, or allow catching an exception. Am I
right? And why is this?
I'm running ruby 1.8.7. If I 'require' a file, and it fails, the program
just crashes with message like so:
no such file to load -- whatsit
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`gem_original_require'
from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in
`require'
from (irb):1
or (if if I turn auto_gem off):
/main.rb:3:in `require': no such file to load -- whatsit (LoadError)
from ./main.rb:3
It seems like I should be given the chance to do something else if a
require fails, such as print an more understandable message to the
console or put something in a log. But it seems that ruby does not
return from the 'require' call, or allow catching an exception. Am I
right? And why is this?
Works for me :
$ irb
irb(main):001:0> require 'foo'
LoadError: no such file to load -- foo
from (irb):1:in `require'
from (irb):1
irb(main):002:0> begin
irb(main):003:1* require 'foo'
irb(main):004:1> rescue LoadError => e
irb(main):005:1> puts 'do something else'
irb(main):006:1> end
do something else
=> nil
It seems like I should be given the chance to do something else if a
require fails, such as print an more understandable message to the
console or put something in a log. But it seems that ruby does not
return from the 'require' call, or allow catching an exception. Am I
right? And why is this?
A bare "rescue" without specifying a class will rescue StandardError
(and all its subclasses). But LoadError is not a subclass of
StandardError: