2013-10-13 223 views
6

我試圖配置當我的對象成功上傳到亞馬遜的S3服務時從回形針返回的端點。上傳和一切工作正常,但正在返回的URL不正確,無法顯示上傳。Rails 4,回形針,亞馬遜S3配置亞馬遜路徑

現在,返回的網址是http://s3.amazonaws.com/path/to/my/items(如下圖所示)。

相反的s3.amazonaws.com,我想根本上是特定桶的位置(例如s3-us-west-1.amazonaws.com/path/to/my/items

enter image description here

我應該在哪裏嘗試並配置不同的url路徑(從s3.amazonaws.com到其他地方)?我試圖添加一個帶有上述路徑的url到我的配置文件中,例如:

#Paperclip Amazon S3 
    config.paperclip_defaults = { 
     :storage => :s3, 
     :url => "https://s3-us-west-1.amazonaws.com/", 
     :s3_credentials => { 
      :bucket => ENV['S3_BUCKET_NAME'], 
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'], 
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] 

     } 

    } 

這似乎沒有任何效果。請告訴我應該在哪裏設置這個選項!

在此先感謝!

+0

**更換**':URL =>「https://s3-us-west-1.amazonaws.com/ 「'** with **':s3_host_name =>'s3-us-west-1.amazonaws.com'',你會很好。 –

回答

11

如果你打算使用S3,我們發現你必須在你的實際模型中包含S3憑證(不僅僅是配置文件)。下面是我們做什麼:

型號

#Image Upload 
Paperclip.options[:command_path] = 'C:\RailsInstaller\ImageMagick' 
has_attached_file :image, 
     :styles => { :medium => "x300", :thumb => "x100" }, 
     :default_url => "****", 
     :storage => :s3, 
     :bucket => '****', 
     :s3_credentials => S3_CREDENTIALS, 
      :url => "/:image/:id/:style/:basename.:extension", 
      :path => ":image/:id/:style/:basename.:extension" 

的config/application.rb中

# Paperclip (for Amazon) (we use EU servers) 
    config.paperclip_defaults = { 
    :storage => :s3, 
    :s3_host_name => 's3-eu-west-1.amazonaws.com' 
    } 

配置/ s3.yml

#Amazon AWS Config 
development: 
    access_key_id: ********** 
    secret_access_key: ************** 
    bucket: **** 

production: 
    access_key_id: *********** 
    secret_access_key: *********** 
    bucket: **** 

希望這會有幫助嗎?

+2

你也可以把':s3_host_name'鍵放到** Model **中。 –

+0

而不是在每個模型中編寫我的憑證,我只需將其寫入config/aws.yml中即可。 –

0

我在遷移到Spree 2.2時也遇到了同樣的問題,我仍然不確定如何正確解決它。似乎Paperclip應該從配置更新路徑,但事實並非如此。

缺乏一個更好的解決辦法,我已經覆蓋了施普雷:: Image類是這樣的:

1 Spree::Image.class_eval do 
2 has_attached_file :attachment, 
3  styles: { mini: '48x48>', small: '100x100>', product: '240x240>', large: '600x600>' }, 
4  default_style: :product, 
5  url: '/spree/products/:id/:style/:basename.:extension', 
6  path: 'products/:id/:style/:basename.:extension', 
7  convert_options: { all: '-strip -auto-orient -colorspace sRGB' }· 
8 end