Ruby 批处理用于对讲的数组

Gar*_*ows 2 ruby ruby-on-rails-3 intercom

我有一组需要处理的对象。我需要通过他们的 API 将它们发送到 3rd 方系统,它一次只允许我提交 100 个对象。

所以假设我有一个像这样的对象数组

myUserArray = [{first_name: 'Jon', last_name: 'Snow'}, {first_name: 'Sansa', last_name: 'Stark'}...]
Run Code Online (Sandbox Code Playgroud)

我最终像这样将其发送给他们的 API

intercom.users.submit_bulk_job(create_items: myUserArray)
Run Code Online (Sandbox Code Playgroud)

当对象数量小于 100 时,这可以正常工作,但由于它们的速率限制,当大于 100 时会引发错误,这很公平。我有 5000 个对象要处理,所以我需要一种将 myUserArray 批处理成 100 个块的方法,直到它们全部完成。将不胜感激任何建议!

Ale*_*kin 5

Enumerable#each_slice 来救援:

myUserArray.each_slice(100) do |slice|
  intercom.users.submit_bulk_job(create_items: slice)
end
Run Code Online (Sandbox Code Playgroud)