SORU
1 NİSAN 2010, PERŞEMBE


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
10 AĞUSTOS 2010, Salı


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • gsipek

    gsipek

    20 Temmuz 2007
  • Caramella Girls

    Caramella Gi

    19 Mayıs 2008