2013-12-21 43 views
1

假設我有一個拉取請求ID的列表,例如在此gist中。爲拉取請求列表獲取添加/刪除的行

如果我只是想爲每個ID有兩個變量:「行添加」和「行刪除」。我如何使用octokit爲每個pull請求獲取這些變量?

我想像我這樣開始的紅寶石:

require 'octokit' 
require 'csv' 

list = [2825, 2119, 2629] 
output = [] 

for id in list 
    output.push(Octokit.pull_request('rubinius/rubinius', id, options = {})) 
end 

begin 
    file = File.open("/Users/Username/Desktop/pr_mining_output.txt", "w") 
    file.write(output) 
rescue IOError => e 
    #some error occur, dir not writable etc. 
ensure 
    file.close unless file == nil 
end 

但這似乎簡單地覆蓋該文件,並只給我一個結果,而不是3(或然而,許多都在list對象我怎樣才能把它給我的所有3?

回答

2
require 'octokit' 
require 'csv' 

client = Octokit::Client.new :login => 'mylogin', :password => 'mypass' 
repo = 'rubinius/rubinius' 
numbers = [2825, 2119, 2629] 

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 Octokit::NotFound 
    end 
    end  
end 
+0

這除了當它遇到已被轉換到一個問題,一個拉請求ID的偉大工程,數據,然後它提供了404和不動 上。有沒有辦法確保它進入列表中的下一個。例如,嘗試數字= [642,630,623]以複製此錯誤。 – histelheim

+1

@histelheim,處理'Octokit :: NotFound'。查看更新的代碼。 – jonahb

0
require 'octokit' 
require 'csv' 

client = Octokit::Client.new :login => 'username', :password => 'password' 
repo = 'rubinius/rubinius' 
numbers = CSV.read('/Users/User/Downloads/numbers.csv').flatten 

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 
     csv << [number, 0, 0] 
     next 
     end 
    end 
    end