rescue_from исключений Коала - PullRequest
       14

rescue_from исключений Коала

3 голосов
/ 20 декабря 2011

Начинающий вопрос возможно:

Я пытаюсь проверить свои права пользователя на Facebook с помощью Koala. В некоторых случаях я получаю ошибку. Поэтому я просто хочу поймать его и перенаправить для повторной аутентификации.

  def check_facebook_permissions
    if token = current_user.try(:authentications).find_by_provider('facebook').try(:token)
      graph = Koala::Facebook::API.new(token)
      permissions = graph.get_connections('me','permissions')
      session[:facebook] = {}
      session[:facebook][:ask_publish_actions] = true if permissions[0]['publish_actions'] != true && permissions[0]['publish_stream'] != true
    end
  rescue_from Koala::Facebook::APIError
    # Do something funky here
  end

Я думал, что это было просто, но я никогда не пытаюсь спасти себя. Вместо этого я получаю:

Koala::Facebook::APIError (OAuthException: Error validating access token: Session has expired at unix time 1324026000. The current unix time is 1324352685.):

Что мне здесь не хватает?

Ответы [ 2 ]

8 голосов
/ 20 декабря 2011

rescue_from не является синтаксической конструкцией Ruby, как rescue - это нормальная функция, и вам нужен блок для ее использования.В вашем коде код не задан, rescue_from выполняется и эффективно пропускается - что после того, как оно не имеет отношения к исключениям, возникшим до него (как если бы вы поместили любую другую функцию, например puts вместо * 1005)*).

См. Пример rescue_from, используйте здесь .

Чтобы этот код работал, вам нужен ванильный Ruby rescue:

rescue Koala::Facebook::APIError => e
0 голосов
/ 20 декабря 2011

Правильный синтаксис для обработки ошибок в Ruby:

begin
  # do something that will throw an error
rescue StandardError => e # StandardError is the root class of most errors
  # rescue the error
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...