簡體   English   中英

Rails回形針返回錯誤的Cloudfront URL

[英]Rails Paperclip returning wrong Cloudfront URL

我正在一個Rails網站上,該網站使用Paperclip將文件上傳到Amazon S3,然后通過Cloudfront為它們提供服務。 我的上傳工作正常,Cloudfront可以正確提供文件,但是由於某些原因, ModelObj.attachment.url在我的生產服務器上無法正常工作。 它在我的開發服務器(Windows 8下為WEBrick)上可以正常工作,但是在實時站點(帶有Phusion Passenger的LAMP)上返回錯誤的URL。 它返回幾乎正確的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.rbproduction.rb發生了什么事錯在這里。以及如何解決?

(我發現了這個問題該問題與我的需要很接近,但僅涉及S3。)

更新:發現了一些奇怪的東西。 Model.snd.options返回一個哈希,其中包括:s3_host_alias => nil。 也許以某種方式在配置文件之前加載了我的模型?

啊哈,找到了。 由於某種原因,我的模型要么在配置文件之前被加載,要么加載器無法訪問APP_CONFIG 這意味着:s3_host_alias被設置為nil,這當然會破壞事情。 我將:s3_host_alias => APP_CONFIG['cloudfront_domain']從模型移到environment.rb ,現在可以正常工作了。

我不知道為什么我的模型會在配置文件之前加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM