rescue_from考拉例外

TLK*_*TLK 3 ruby exception-handling facebook-graph-api ruby-on-rails-3 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
Run Code Online (Sandbox Code Playgroud)

我觉得这很简单,但我从来没有打过我的救援.相反,我得到:

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

我在这里错过了什么?

Ama*_*dan 8

rescue_from它不是Ruby的语法结构rescue- 它是一个普通的函数,你需要一个块来使用它.在你的代码中,没有给出任何代码,rescue_from执行并有效地跳过代码 - 之后的内容与之前引发的任何异常无关(就像你放置任何其他函数一样puts,而不是rescue_from).

请参阅此处rescue_from使用示例.

要使这段代码有效,你需要vanilla Ruby rescue:

rescue Koala::Facebook::APIError => e
Run Code Online (Sandbox Code Playgroud)