我正在使用Paperclip將文件上傳到Amazon S3並通過Cloudfront提供服務的Rails網站上工作。我的上傳工作正常,Cloudfront正確地提供了這些文件,但由於某種原因,ModelObj.attachment.url
在我的生產服務器上無法正常工作。它在我的開發服務器(Windows 8下的WEBrick)上正常工作,但在現場(LAMP with Phusion Passenger)上返回錯誤的URL。它返回幾乎正確的URL,而是Rails Paperclip返回錯誤的Cloudfront URL
http://[stuff].cloudfront.net/kidbooks/snds/5072_original.mp3?1393858446
我越來越
http:///kidbooks/snds/5072_original.mp3?1393858446
它的配置如下:在environment.rb
:
Paperclip::Attachment.default_options.merge!({
:storage => :s3,
:bucket => APP_CONFIG['s3_bucket'],
:path => "/#{APP_CONFIG['s3_path']}/:attachment/:id_:style.:extension",
:s3_credentials => {
...
}
})
和模型:
has_attached_file :snd,
:url => ':s3_alias_url',
:s3_host_alias => APP_CONFIG['cloudfront_domain']
APP_CONFIG
正在兩臺服務器上正確設置;我查過了。 (或者至少,它是在現場服務器上的控制檯中正確設置的;我想我可以直接查看更多信息,出現與environments/development.rb
或production.rb
有什麼關係。修復
(我發現this question,這是接近我所需要的,但只涉及S3)
更新:發現一些奇怪Model.snd.options
返回,其中包括,除其他事項外散,。: s3_host_alias => nil。也許我的模型在配置文件之前被加載了嗎?
生產服務器中'APP_CONFIG ['cloudfront_domain']'的值是什麼? – Agis
@ Agis:'1.9.3-p429:001> APP_CONFIG ['cloudfront_domain']' '=>「[correct] .cloudfront.net」'。我猜可能它在服務器和控制檯之間有某種不同,但我不知道一個簡單的方法來測試(在某處添加虛擬頁面的情況)。 – user1618143
APP_CONFIG ['s3_path']'的值是什麼? – Agis