Тормоз не любит спасение

У меня есть этот метод внутри модели с этим кодом внутри. Он вызывает гем и возвращает либо нужный мне объект, либо ресурс 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

Конечно, трудно сказать, не зная, на что именно жалуются линтер или тормозник.... но это должно быть лучше. Вам, конечно, не нужно использовать начальные конечные блоки, но иногда линтеры / сообщество считают, что это лучше...

Другие вопросы по тегам