2013-03-24 156 views
0

我的應用程序託管在Heroku上,如果它可以不將文件上傳到在Heroku上,而是直接向公衆/文件夾,我想知道到的Linode - 說 - 的Linode上傳文件使用CarrierWave

我的應用程序同時使用的Heroku和Linode。兩人通過網絡服務請求相互交談。但一般來說,我試圖在Linode上存儲任何生成/上傳的文件 - 而在Heroku上沒有任何內容

現在我有一種情況,我想讓用戶上傳文件。最終的目的地是Linode。但目前,我不得不從客戶端電腦 - > Heroku - > Linode。然而,最佳解決方案是客戶端PC - > Linode

我想在嘗試重新連接現有代碼之前我會問。 會改變storage_dir方法如下訣竅?

def storage_dir 
    return http://<linode>/<local-folder> 
end 

感謝您的幫助 阿比納夫

+0

也許一個客戶端的JavaScript解決方案,您只需直接上傳文件的Linode?你可以使用跨源資源共享 – John 2013-03-24 07:19:51

回答

0

所以,你使用CarrierWave?我不確定您目前如何上傳到Linode,但我會採取刺。

因此,根據CarrierWave的GitHub上的文檔,你需要添加這樣的事情也許在你的config /初始化一個carrierwave.rb文件:如果你正在使用亞馬遜

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS',   # required 
    :aws_access_key_id  => 'xxx',   # required 
    :aws_secret_access_key => 'yyy',   # required 
    } 
    config.fog_directory = 'name_of_directory' # required 
end 

。當然,這是AWS S3。我在http://ruby-doc.org/gems/docs/p/phpfog-fog-0.4.1.2/Fog/Linode/Compute/Mock.html上發現了linode的一些霧文檔(&其他存儲服務)。如果點擊'new(options = {})',您將看到@linode_api_key = options[:linode_api_key]。所以,我認爲你將能夠使用CarrierWave直接上傳到的Linode有:

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'Linode',  
    :linode_api_key   => 'xxx',   
    } 
    config.fog_directory = 'name_of_directory' 
end