2013-12-21 3 views
0

У меня есть этот код:Перемещение вперед в цикле, несмотря на ошибки

require 'octokit' 
require 'csv' 

client = Octokit::Client.new :login => 'github_username', :password => 'github_password' 
repo = 'rubinius/rubinius' 
numbers = CSV.read('/Users/Name/Downloads/numbers.csv').flatten 
# at this point, essentially numbers = [642, 630, 623, 643, 626] 

CSV.open('results.csv', 'w') do |csv| 
    for number in numbers 
     begin 
      pull = client.pull_request(repo, number) 
      csv << [pull.number, pull.additions, pull.deletions] 
     rescue 
      next 
     end 
    end  
    end 

Однако временами client.pull_request встречает 404, а затем прыгает снова и идет к следующему. Тем не менее, он по-прежнему необходимо напечатать номер в numbers массиве, а затем положить пустой или ноль для pull.additions и pull.deletions, а затем перейти к следующему элементу в массиве, таким образом, производя что-то вроде:

pull.number pull.additions pull.deletions 
642,  12,   3 
630,   , 
623,  15,   23 
... 

Как это можно сделать?

ответ

1

Я извлекал для цикла, поскольку она не rubyish в природе, ниже должна работать

require 'octokit' 
require 'csv' 

client = Octokit::Client.new :login => 'github_username', :password => 'github_password' 
repo = 'rubinius/rubinius' 
numbers = CSV.read('/Users/Name/Downloads/numbers.csv').flatten 
# at this point, essentially numbers = [642, 630, 623, 643, 626] 

CSV.open('results.csv', 'w') do |csv| 
    numbers.each do |number| 
     begin 
      pull = client.pull_request(repo, number) 
      csv << [pull.number, pull.additions, pull.deletions] 
     rescue 
      csv << [0,0,0] 
      next 
     end 
    end  
    end 
0

Вы пытались использовать start/rescue/обеспечить, чтобы код спасения/обеспечения задал переменную pull соответственно? См. Примеры https://stackoverflow.com/a/2192010/832648.

+0

Да, но он по-прежнему проблематично - см отредактированного кода, приведенный выше – histelheim

Смежные вопросы