プロダクションサーバーとは異なるS3バケットを使用するステージングサーバーのセットアップがありますが、ステージング時にイメージを表示するには、バケット間でイメージを手動で同期する必要があります。何千もの画像(日々成長している)があるので、これは実行可能ではありません。あるS3から画像を読み込み、別のS3に書き込む際にExcon :: Errors :: SocketErrorを取得しますか?
私たちのプロダクションS3からイメージを読み込むためにCarrierwaveを設定しても、私たちのプロダクションイメージストアを汚染しないようにステージングS3に新しいイメージを書き込むことはありますか?
UPDATE:私はこれを行うだろうCarrierWave用のカスタムストレージエンジンを作成する時に私の手を試してみた(ライン228を除く霧ストレージエンジンと--basically同じthis gistを参照)が、私は」画像を取得しようとしたときにこのエラーが発生する:
Excon::Errors::SocketError (hostname does not match the server certificate (OpenSSL::SSL::SSLError)):
lib/carrier_wave/storage/dual_fog.rb:214:in `exists?'
lib/carrier_wave/storage/dual_fog.rb:228:in `public_url'
lib/carrier_wave/storage/dual_fog.rb:267:in `url'
誰でも知っていますか?要点のコードからわかるように、このソリューションはステージングから読み取ることができ、ステージングでイメージが見つからなければプロダクションにフォールバックすることができます。ただし、すべての書き込み操作はステージングに進む必要があります。
ランダムな推測:ステージングバケットには「。その名前で? –
@FrederickCheungええ、私たちの 'fog_host'は' assets.domain.com'に、 'fog_read_host'は' staging.assets.domain.com'に設定されています。それが問題の原因ですか? – neezer
実際のs3バケットにドットが付いている場合(CNAMEに別名を付けても問題ありません)、ssl vertの検証は失敗します。ほとんどのブラウザ/ライブラリは* .domain.com証明書を直接サブドメインに対してのみ受け付けます。 foo.bar.domain.com –