【发布时间】:2016-06-02 19:04:02
【问题描述】:
如何使用rescue 继续循环。我举个例子
def self.execute
Foo.some_scope.each do |foo|
# This calls to an external API, and sometimes can raise an error if the account is not active
App::Client::Sync.new(foo).start!
end
end
所以通常rescue Bar::Web::Api::Error => e 会在方法结束时执行并且循环会停止。如果我可以更新被救出的foo 的属性并再次调用该方法,那么foo 将不会包含在范围内,我将能够再次启动循环。但问题是,我只想要每个foo 一次。所以这种方式将再次循环遍历所有现有的foo。
还有什么方法可以做到这一点?我可以创建一个在execute 方法顶部调用的私有方法。这可以循环遍历foo 并更新属性,因此它们不属于范围。但这听起来像是一个无限循环。
有人有好的解决办法吗?
【问题讨论】:
-
不是 ruby 专家,但我认为您可以看看 this 在循环中以非中断方式使用它(最坏的情况是空重试)
标签: ruby-on-rails ruby ruby-on-rails-4