我有一個rails應用程序,它有多個帶回形針附件的模型,都被上傳到S3。這個應用程序也有一個很大的測試套件,經常運行。這樣做的缺點是每次測試運行都會將大量文件上傳到我們的S3帳戶,這使測試套件運行緩慢。這也會減慢開發速度,並且需要您連接互聯網才能使用代碼。如何根據當前的Rails環境設置回形針的存儲機制?
是否有合理的方法來設置基於Rails環境的回形針存儲機制?理想情況下,我們的測試和開發環境將使用本地文件系統存儲,生產環境將使用S3存儲。
我也想將這個邏輯提取到某種共享模塊中,因爲我們有幾個模型需要這種行爲。我想避免這樣每個模型的內部解決方案:
### We don't want to do this in our models...
if Rails.env.production?
has_attached_file :image, :styles => {...},
:path => "images/:uuid_partition/:uuid/:style.:extension",
:storage => :s3,
:url => ':s3_authenticated_url', # generates an expiring url
:s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
:s3_permissions => 'private',
:s3_protocol => 'https'
else
has_attached_file :image, :styles => {...},
:storage => :filesystem
# Default :path and :url should be used for dev/test envs.
end
更新:粘性部分是附件的:path
和:url
選項需要根據正在使用的存儲系統上的不同。
任何意見或建議將不勝感激! :-)
好的工作。是的,需要比我提供的更多的抽象! :) – 2010-05-14 18:42:45
非常好的工作。謝謝。它真的幫助了我。 – 2011-02-17 17:04:06
我在上面提到的常量/散列方法時遇到了麻煩,但是這很好,而且我喜歡如何將所有回形針邏輯保存在一個地方。謝謝! – neezer 2011-11-24 08:10:20