Nasıl ataç set'depolama mekanizması mevcut Raylar ortamına bağlı s miyim?
S3 yüklenen tüm ataç ekleri ile birden fazla modeli olan bir rails uygulaması var. Bu uygulama aynı zamanda sık sık çalıştırılan büyük bir test paketi var. Bu dezavantajı dosyaları bir ton her testi S3 hesabımıza, test paketi yavaş yavaş kaçmaya karşıya. Ayrıca gelişim biraz yavaşlar, ve kod üzerinde çalışmak için bir ınternet bağlantısı olması gerekir.
Makul bir şekilde ataç depolama mekanizması Raylar çevreye göre ayarlayın. İdeal olarak, test ve geliştirme ortamları yerel dosya sistemi depolama ve üretim ortamı S3 depolama kullanmak istiyorsunuz.
Ayrıca bu davranış, ihtiyaç duyacağı çeşitli modeller üzerinden epey bir türlü ortak bir modüle bu mantık ayıklamak istiyorum. Her modelin içinde bu gibi bir çözüm kaçmak istiyorum:
### 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
Güncelleme:Yapışkan kısım Eki :path
:url
seçenekleri depolama sistemi kullanılıyor bağlı olarak değişir.
Herhangi bir tavsiye ya da öneri büyük mutluluk duyacağız! :-)
CEVAP
Barry önerisi daha çok seviyorum ve hiçbir şey daha sonra ataç seçenekleri ile birleştirilmiş bir karma, değişken ayarı sizi tutan yok.
Config/ortamlar/geliştirme.rb ve test.rb gibi bir şey ayarlayın
PAPERCLIP_STORAGE_OPTIONS = {}
Ve config/üretim ortamları/.rb
PAPERCLIP_STORAGE_OPTIONS = {:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => "/:style/:filename"}
Ataç model: nihayet
has_attached_file :image, {
:styles => {:thumb => '50x50#', :original => '800x800>'}
}.merge(PAPERCLIP_STORAGE_OPTIONS)
Güncelleme:Benzer bir yaklaşım son zamanlarda Raylar implemented in Paperclip 3 oldu.x apps. Belirli ortam ayarları config.paperclip_defaults = {:storage => :s3, ...}
ile ayarlanabilir.
Nasıl Raylar geçiş veritabanında bir s...
Nasıl C mevcut programın ismini alabil...
isteğe bağlı yerel değişkenler kısmi ş...
Nasıl Raylar geçerli yol bulabilir miy...
Nasıl bir URL bir dosya indirmek ve ka...