Прежде всего, мне нужно использовать конструкцию try-catch (begin-rescue) для отлова определенных ошибок в контроллерах для каждого метода.Прав ли я в том, что попытка ловли - это начало спасательных работ на рельсах?
Как лучше всего создавать пользовательское исключение, включая явное управление значениями null?
Каков подход для сохранения всех исключений в файле журнала?
Например, я использую этот код для отлова стандартной ошибки, когда эта функция ничего не получает в качестве параметра.
- Как создать собственное исключение для этого случая?когда
game_number
равно nill
- Как записать эти ошибки в независимый файл журнала, используя специальную библиотеку для управления журналом (log4xxx, logging-rails, logging)?
def fizz_buzz(game_number)
# list of the numbers, starting from @game.number
begin
serie_num = (game_number..Constants::LAST_NUMBER_FIZZBUZZ).to_a
rescue StandardError => e
print e
# how to save this error to independent file using logging lib?
# how using custom exception for catch errors like this -
# game_number = nill?
end
new_num = serie_num.map do |num|
if num % 3 == 0 and num % 5 == 0
num = 'fizzbuzz'
elsif num % 3 == 0
num = 'fizz'
elsif num % 5 == 0
num = 'buzz'
elsif num % 3 != 0 and num % 5 != 0
num = num
end
end
return new_num.join(', ')
end
Правильно ли использовать конструкцию begin-rescue таким образом?
Я использую следующую кодовую инструкцию в config\enviroments\development.rb
для создания нового регистратора для записи в независимый файл, но получаю только почти пустой файл.
config.Logger = Logger.new(ENV["PWD"] + '/fizzbuzz_log.log')
Получил fizzbuzz_log.log
вот так:
# Logfile created on 2019-06-03 11:47:36 +0200 by logger.rb/56438
Заранее спасибо.