Как спасти вызовы RestClient API в режиме разработки, когда Интернет недоступен? - PullRequest
0 голосов
/ 20 мая 2018

В моем приложении на Rails я выполняю различные вызовы API, подобные этому:

class SearchFacebook

  FALLBACK_STARS = 5.0

  def self.call
    begin
      url = "https://graph.facebook.com/v2.12/#{FACEBOOK_PAGE_ID}"
      response = RestClient.get(url, :params => {:access_token => FACEBOOK_ACCESS_TOKEN, :fields => "overall_star_rating"})
      json = JSON.parse(response)
      stars = json["overall_star_rating"]
    rescue RestClient::ExceptionWithResponse => error
      stars = FALLBACK_STARS
    end
    {:stars => stars}
  end

end

Проблема в том, что я часто запускаю свое приложение в своей локальной среде.Когда нет доступного подключения к Интернету (что часто случается со мной, не спрашивайте почему), я получаю следующую ошибку:

SocketError .Не удалось открыть TCP-подключение к api.facebook.com:443 (getaddrinfo: имя узла или имя сервера указано или не известно)

Как мне спастись из , находясь в автономном режиме ?

Я проверил Документация RestClient , но безрезультатно.Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

ОК, я решил это, просто спасаясь от SocketError:

rescue SocketError, RestClient::ExceptionWithResponse => error

Я нашел этот ответ весьма полезным.

0 голосов
/ 20 мая 2018

Можете ли вы использовать одеяло rescue => e и использовать byebug для проверки возникающего исключения.Затем вы могли бы спасти эту ошибку, если в среде разработки.

Есть некоторые другие опции, упомянутые здесь Проверить, существует ли подключение к Интернету с Ruby?

...