7

これが私の状況でした。

私はペーパークリップを使用して、ユーザーが画像をアップロードできるようにしました。それはうまくいき、すべてが大丈夫でした。次に、それをherokuにプッシュしました。その瞬間、ユーザーがアップロードしたばかりのすべての画像を見ることができます。ただし、新しいコミットを作成して再びherokuにプッシュするたびに、以前の画像はすべて失われます。もうファイルを持っていないようです、それをロードすることはできません。

それで、ここで私が考えたのは、herokuサーバーにプッシュするたびに、ローカルにあった画像ファイルがherokuサーバーにアップロードされたということですか?

私はそれについて自分の問題を調査しましたが、彼らが実際にherokuについて何を言っているのかよくわかりません。また、それが私と同じ問題であるかどうかもわかりません。

Herokuには読み取り専用のファイルシステムがあります。つまり、Paperclipは、アップロードされたファイルをHeroku内のどの場所にも保存できません。

Herokuでホストされているアプリケーションにファイルをアップロードできるようにする場合は、ファイルをデータベース内にバイナリブロブとして保存するか、別のサービスを使用してファイルを保存する必要があります。別のサービスをお探しの場合、PaperclipにはAmazonS3との統合をサポートする機能が組み込まれています。

Amazon S3の登録にはクレジットカードが必要であることがわかりました。クレジットカードを持っていない場合、サービスを利用できませんか?

詳細なアドバイスや説明をいただければ幸いです。ありがとうございます。

4

1 に答える 1

5

Amazonは無料のデバイスではありません。使用するには、クレジットカード番号を指定する必要があります。しかし、あなたはあなたが使うものだけを支払いますが、それは高価ではありません。たとえば、私のWebサイトの場合、先月、15Gbのストレージに2.46ドルを支払い、16Gbのデータ転送に1.90ドルを支払いました。

ペーパークリップでS3を使用するには、に追加する必要がありgem 'aws-s3'ますGemfile

config/s3.yml次に、アセットのクレデンシャルを追加する必要があります。次に例を示します。

production:
  access_key_id: AAAAAAAAAAAAAAAAAA
  secret_access_key: BBBBBBBBBBBBBBBBBBBBBBBBBBB
  bucket: assets.my-bucket

次に、アセットを格納するモデルがあります。たとえば、次のようになります。

class Asset
  has_attached_file :asset, 
    :styles => {  :thumb => "60x60#", :large => "700x330#"},
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/images/:id/:style.:extension"
  validates_attachment_content_type :asset, :content_type => ['image/gif', 'image/jpeg', 'image/png', 'image/x-ms-bmp']
end

お役に立てば幸いです

于 2012-05-03T07:27:20.863 に答える