2016-02-18 112 views
0

我正在爲一家公司製作一個網頁,並且我已將它託管在heroku上,當我在本地計算機上將文件鏈接上載到我的csv時, ,但是當使用部署版本時,它只能工作一段時間,因爲它將信息存儲在臨時文件中。它不會寫入我在GitHub上的csv。 M的問題是如何使用ruby和Sinatra寫入我的GitHub。這裏是我的一些代碼的片段。任何幫助將是巨大的,因爲這是由於像現在我需要能夠從github或dropbox讀取和寫入我的csv文件

get '/update_csv' do 
csv = CSV.read("citywholesale.csv") 

erb :update_csv, :locals =>{:csv => csv} 
end 

get '/upload' do 
erb :upload, :locals =>{:message => "Please Enter all the required information."} 
end 

def newfilename(filename) 
if filename.include?("dl=0") && filename.include?("dropbox") 
filename.chomp!("dl=0") 
filename << "raw=1" 
end 
filename 
end 

post '/upload' do 

filename = params[:filename] 
caption = params[:caption] 
validity = params[:validity] 
signtype = params[:signtype] 
featured = params[:featured] 

citywholesale = "citywholesale.csv" 
citywholesale = File.open(citywholesale,'a') 

newfilename = newfilename(filename) 
citywholesale.write(newfilename + "," + caption + "," + validity + "," +  signtype + "," + featured + "\r") 
citywholesale.close 
redirect '/update_csv' 
end 

post '/edit_upload' do 
csv = CSV.read("citywholesale.csv") 
csv_row = params[:edit].to_i 
row = csv[csv_row] 

erb :edit_upload, :locals =>{:id => csv_row, :image => row[0], 
        :caption => row[1], :active => row[2], :signtype => row[3], :featured => row[4]} 

回答

4

你的意思是你有你有更新的文件在GitHub上回購?讓我先說這是一個壞主意,因爲GitHub是用來託管版本控制的代碼。一個更好的解決方案是將該CSV存儲在該服務器上或類似Amazon's S3的東西上。

但是,如果您確信GitHub是正確的選擇,我認爲您可以做到這一點的唯一方法就是使用GitHub的Gists並使用它們的API來執行此操作。這裏的文檔:

https://developer.github.com/v3/gists/#edit-a-gist

+1

同意,甚至與主旨理念,它仍然是一個誤用:C – zee

+0

@Jamie羅達斯我可以用什麼我需要上傳到。我檢查了他們的文檔,但是很難製作它的頭部或尾部,事實上我現在只是在看s3,但這有點像哇。我對這件事仍然很陌生,所以任何幫助都會變得很酷。 –

+0

GitHub是用來存儲代碼回購的,而不是數據。數據應存儲在服務器,數據庫或專門用於存儲它的服務(S3)中。按照你寫的內容,我猜你最好的選擇是讓你保存的文件不是臨時文件。然後,如果你需要在本地使用這些數據,你可以從服務器上'scp'並獲得本地副本。 –