2013-12-11 73 views
0

我正在创建一个Twitter相关的Web服务。所以Twitter API在很多方面都被调用。 我知道限速错误可以通过rescue Twitter::Error::TooManyRequests来处理。有没有推荐的方法来处理rails中的API错误?

但要写在每一个地方beginrescue语法很麻烦,容易出错。

发生错误时,我想在视图中显示错误消息并使Twitter请求方法返回nil

我正在使用twitter gem并使用像这样。

# app/models/user.rb 
def twitter 
    @twitter ||= Twitter::Client.new(oauth_token: access_token, oauth_token_secret: access_secret) 
end 

我该如何实现?

此外,这只是我脑子里想的,如果有更好的方法,我会按照指示。

回答

0

刚抢救错误并在方法返回nil:

# app/models/user.rb 
def twitter 
    @twitter ||= Twitter::Client.new(oauth_token: access_token, oauth_token_secret: access_secret) 
rescue Twitter::Error::TooManyRequests 
    nil 
end 

现在的方法时出现你的错误本身将返回零。

然后在您的控制器中,如果twitter方法返回nil(您也可以选择比nil更具描述性的内容),则可以设置flash。

+0

感谢您的回答,但我注意到现在救援并没有赶上'Twitter :: Error :: TooManyRequests'。你有什么想法,为什么呢? – ironsand

+0

如果'@twitter || = Twitter :: Client.new(oauth_token:access_token,oauth_token_secret:access_secret)'行引发错误'Twitter :: Error :: TooManyRequests',那么该救援将会捕获它。你能更具体地了解正在发生的事情吗? – tyler

+0

我在另一个代码位置调用了一个类似'user.twitter.list_owned'的方法。然后,错误不会被救援声明捕获。 – ironsand

相关问题