Тормоз не любит спасение
У меня есть этот метод внутри модели с этим кодом внутри. Он вызывает гем и возвращает либо нужный мне объект, либо ресурс 404 не найден. если я делаю метод на 404, то мне нужно спасти его, как показано ниже. Если я просто использую спасение, то линтер не работает. Если я это сделаю, то этот тормоз не получится.
find_object
return_object = Rails.cache.fetch(cache_key + '/variableInsideObject') do
GemClient.find(id).variableInsideObject
rescue HttpServices::ResourceNotFoundError
raise ApplicationController::ExternalServiceError,
"variable inside object not found for id: #{id}"
end
end
Как я могу спасти эту ошибку, не подведя линтера и тормозов.
1 ответ
Решение
Imo это более Ruby-esque реализация этого кода:
def find_object
return_object = begin
Rails.cache.fetch(cache_key + '/variableInsideObject') do
GemClient.find(id).variableInsideObject
end
rescue HttpServices::ResourceNotFoundError => e
Rails.logger.error(e)
raise ApplicationController::ExternalServiceError,
"variable inside object not found for id: #{id}"
end
end
Конечно, трудно сказать, не зная, на что именно жалуются линтер или тормозник.... но это должно быть лучше. Вам, конечно, не нужно использовать начальные конечные блоки, но иногда линтеры / сообщество считают, что это лучше...