я следующий код:Переменные не распознаются в спасании в Руби
rescue Timeout::Error, StandardError => e
puts "Caught exception: #{e.message}".red
log.puts("#{e.backtrace}")
email_ids_all.each do |email_delete|
call= "/api/v2/emails/#{email_delete}/"
......
До этого rescue
части я определил log
и email_ids_all
. Однако ни один из них не распознается в рубиновом скрипте. Если я это сделать:
rescue Timeout::Error, StandardError => e
File.open(rescuelogfile, 'w') do |log| #setup log to write response codes.
puts "Caught exception: #{e.message}".red
log.puts("#{e.backtrace}")
email_ids_all.each do |email_delete|
call= "/api/v2/emails/#{email_delete}/"
....
log
работает отлично, что имеет смысл. Было бы много писать, чтобы переопределить массив email_ids_all
и другие переменные, содержащиеся внутри моего блока спасения.
Есть ли способ разрешить распознавание переменных внутри спасения? В основном мой код выложен следующим образом:
begin
#some code
rescue
#above code
end
Я использую ruby 1.9.3.
EDIT ----
log
начинается сразу после моего заявления begin
:
begin
File.open(logfile, 'w') do |log| #setup log to write response codes.
log.puts
работает на протяжении всего кода, за исключением, когда выдается ошибка, а затем запускает скрипт спасательную где log
недоступно.
То же самое касается email_ids_all
. Существует вызов API, который генерирует около 10 000 писем, и каждый из них добавляется в массив email_ids_all
. Скрипт получает ошибку примерно на полпути к генерации этих писем, поэтому мне нужен сценарий спасения для удаления всех идентификаторов электронной почты в массиве email_ids_all
. Но по какой-то причине я получаю следующую ошибку:
FS_Test_Env.rb:762:in `block in <main>': undefined local variable or method `email_ids_all' for main:Object (NameError)
from FS_Test_Env.rb:759:in `open'
from FS_Test_Env.rb:759:in `rescue in <main>'
from FS_Test_Env.rb:7:in `<main>'
Любые мысли?
Пожалуйста, напишите полный пример, невозможно угадать, что случилось, не видя кода. – Stefan
@Stefan Я не знаю, как опубликовать более полный пример. Я могу опубликовать весь код, но это около 800 строк, и я не думаю, что кто-то хочет пройти все это. У меня есть массив, определенный внутри цикла begin, и ошибка, которая происходит. Когда он спасет, массив недоступен. Мне просто нужно знать, нормально ли это, а если нет, что может вызвать это. Видя, как я определяю массив и делаю вызовы API, похоже, не имеет значения – Luigi