2017-06-28 8 views
0

クラフトフロントでpaperclipを設定しようとしていますが、私のURLは正しいパスまたはドメインに戻っていません。構成クラフトフロントのペーパークリップ

これは私のクリップの設定です:

edentials: { 
     access_key_id: ENV.fetch("S3_ACCESS_KEY"), 
     secret_access_key: ENV.fetch("S3_SECRET"), 
     bucket: ENV.fetch("S3_BUCKET"), 
    }, 

    storage:  :s3, 
    url:   ':s3_alias_url', 
    s3_host_alias: "xxxx.cloudfront.com", 
    s3_headers:  { "Cache-Control" => "max-age=31557600" }, 
    s3_protocol: "https", 
    path:   ":rails_root/public/spree/products/:id/:style/:basename.:extension", 
    default_url: "/spree/products/:id/:style/:basename.:extension", 
    default_style: "product", 

s3_cr

すべての私のURLは、デフォルトのURLを使用して戻ってきて...この権利はありますか?

モデル自体には、:s3_alias_urlを上書きしてしまう心配がある設定がいくつかあります。それは可能ですか?

class Image < Asset 
    validate :no_attachment_errors 

    has_attached_file :attachment, 
         styles: { mini: '48x48>', small: '100x100>', product: '240x240>', large: '600x600>' }, 
         default_style: :product, 
         url: '/spree/products/:id/:style/:basename.:extension', 
         path: ':rails_root/public/spree/products/:id/:style/:basename.:extension' 

これは実際に何が行われていますか?

私の主な質問は、画像をモデルに保存するとどうなりますか?その後、そのURLは決定されていますか?または、添付ファイルを取得しようとしたときに決定されますか?画像に添付ファイルを関連付けると、s3にアップロードされます。しかし、添付ファイルを取得しようとすると、最初にクラウドフロントCDNを打つことを試みますか?何が起こっている?

答えて

0

クラウドフロントを伴わないいくつかの問題があります。私は雲の上を自分で使ったことはありませんが、CNameを使ってS3オブジェクトを提供しました。そのコンセプトは似ているようです。

あなたがクリップのAWSで使用するための設定の面で正しい

url:   ':s3_alias_url', 
s3_host_alias: "xxxx.cloudfront.com", 

を持って、あなたの設定ファイルで

。ここで起こっていることは、画像を表示しているときにあなたのパスを開始する場所としてs3_host_aliasを探していることです。

しかし、アップロード時には、バケツ(資格情報内)に行き、オブジェクトをパスに入れます(bucket_name \ path \〜\ file.jpg)。

私のすべてのURLは、デフォルトのURLを使用して戻ってきます...これは正しいですか?

はい。並べ替え

あなたがしたいことではありませんが、あなたがやっていることです。イメージモデルでは、url:/spree/products/:id/:style/:basename.:extension に設定しています。これは、設定ファイル内のdefault_url:のものとまったく同じです。

このようにすると、なぜあなたはその応答を得ているのかを伝えることが難しくなります。ほとんどの場合、default_url:は、画像が添付されていない場合に表示される画像になります。 404ページのような並べ替えではなく、画像用。これは、たとえs3がダウンしても(私の経験では一度しか起こっていない)、あなたがヒットできることを知っている静的なパスに置かれるべきです。

これを変更すると、特定の問題に対処するための情報を追加することができます。デフォルトのパスまたはURLをまだ使用している場合はお知らせください。

(注:この画像は、添付ファイルがない場合にのみ表示されます。画像を添付するときには表示されませんが、見た目には存在しません。それが確認しているパスで見つかったs3から。)

:s3_alias_urlを上書きしている可能性があります。それは可能ですか?

はい。これは、モデルであなたのURLに起こっていることです、それはデフォルトのパスと同じパスをチェックするように指示しています。

また、あなたのパスから:rails_rootを削除します。 rails_rootがあなたのコンピュータ上の場所に移動しようとしていて、あなたのs3のパスにその場所のパスを構築しようとしているので、これは役に立ちます。これは乱雑になることがあります(たとえば、s3キーが表示され、/ C:/ MyDocuments/Sites/MySite/public/spree/products // original/....のように見えます)

これは実際に何をしていますか?

これはどちらの部分もこれを参照しているとは分かりませんが、「これ」が何を指しているか教えていただければ喜んで答えてくれます。

私の主な質問は、画像をモデルに保存するとどうなりますか?

イメージを保存すると、s3オブジェクトのキーが設定され、s3バケットにイメージがアップロードされます。そのキーはあなたのバケツとパスで構成されていますが、URLは具体的にイメージの取得に使用されることに注意してください。ファイルがアップロードされた後のURLへの変更は、画像を探しているクリップを変更する場所に変更されます。

次にURLが決定されていますか?または、添付ファイルを取得しようとしたときに決定されますか?あなたは画像を参照している場合しかし、あなたはimg_tag src="image.attachment"のような何かを言うことができるはずです、画像をアップロードし、あなたが見てすることはURLを作成する必要があるときのURLが構築されてい

。 (あなたの見解に気づかずに説明するのは難しい)

添付ファイルを画像に関連付けると仮定すると、s3にアップロードされますか? はい 添付ファイルを取得しようとすると、まず クラウドフロントCDNにヒットしますか?何が起こっている?アップロード時に

はあなたのバケツを使用しています:ダウンロード(またはディスプレイ)に、資格情報で見つかったことがurl:path:

から構築されたURLを使用しています
関連する問題