私はのHeokuに今すぐ展開されるRails 5アプリケーションで作業しています。私は画像アップロードを管理するPostgrsql、ペーパークリップ、アップロードされたすべての画像を保存するAWS S3を使用しています。このサーバの証明書はS3とPaperclipで無効です
これを達成するために、私はこの非常に詳細で便利なtutorial from Heroku devを使用して、本当に私を助けました。
私はdevelopment
envと同じ設定を使用してテストできます。実際にはdevの魅力のように動作します。
私がHerokuにデプロイし、移行を実行した後、ENV変数を設定すると、カバーイメージを受け入れる新しいBrochure
が作成されます。すべてがうまくいく。画像はAWS S3に正しく保存されます。
しかし、ビューでイメージをレンダリングすると、うまく動作しません。
Safariブラウザ:
Failed to load resource: The certificate for this server is invalid. You might be connecting to a server that is pretending to be “sponsors.matchxperience.s3.amazonaws.com” which could put your confidential information at risk.
CHROMのカナリア:
Failed to load resource: net::ERR_INSECURE_RESPONSE
私は、ブラウザのコンソールで次のエラーを得ました
私は何が問題なのか分かりません。なぜなら、開発環境ではすべてが機能するからです。
何が起こっているのか誰かがこれを助けてくれますか?
production.rb(development.rbにおいて同じ)
Rails.application.configure do
# We’ll also need to specify the AWS configuration variables for the production Environment.
config.paperclip_defaults = {
storage: :s3,
# s3_protocol: 'http',
s3_credentials: {
bucket: ENV.fetch('AWS_S3_BUCKET'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION')
}
}
end
brochure.rb
class Brochure < ApplicationRecord
# This method associates the attribute ":cover" with a file attachment
has_attached_file :cover, styles: {
card: '500x330#',
}
# Validate the attached image is image/jpg, image/png, etc
validates_attachment_content_type :cover, :content_type => /\Aimage\/.*\Z/
end
paperclip.rb設定/初期化子で/
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
あなたの開発用URLはhttpsですか? – Zero
いいえ、私は 'http:// localhost:3000'で作業しています! –
あなたのモデルにあなたのペーパークリップ設定を追加してください。 – Zero