Как мне спасти от `require ': нет такого файла для загрузки в ruby? - PullRequest
40 голосов
/ 17 марта 2010

Я пытаюсь спасти от `` require ': нет такого файла для загрузки в ruby` для чтобы намекнуть пользователю указать флаг -I, если он забыл это сделать. В основном код выглядит так:

begin
  require 'someFile.rb'
rescue
  puts "someFile.rb was not found, have you"
  puts "forgotten to specify the -I flag?"
  exit
end

Я ожидал, что часть rescue возьмет на себя выполнение в случае, если someFile.rb не был найден, но мое предположение было неверным.

Ответы [ 2 ]

55 голосов
/ 17 марта 2010

спасение без аргументов спасает только StandardError s. LoadError (который вызывается файлом, который не был найден) - это не StandardError , а ScriptError (см. http://blog.nicksieger.com/articles/2006/09/06/rubys-exception-hierarchy).. Поэтому вам необходимо спасти LoadError явно, как указано в MBO.

49 голосов
/ 17 марта 2010

Вы должны явно указать, от какой ошибки вы хотите избавиться.

begin
  require 'someFile.rb'
rescue LoadError
  puts "someFile.rb was not found, have you"
  puts "forgotten to specify the -I flag?"
  exit
end
...