起きていること
AWSで画像投稿ができるサイトのデプロイをしています。S3を導入し、画像投稿までできるようになったのですが、肝心な画像が下記のように表示されません。production.logを参照してもエラーは出ておらず、その他ネットで調べた修正方法をいくつか試したのですが解決されません。
解決方法、もしくはエラーを特定する方法を教えていただきたいです。
画像の表示状況
試したこと
・「config/initializers/carrierwave.rb」の「config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/バケット名'」の記述を「 config.asset_host = 'https://xn--rcktbp3a4212b.s3.amazonaws.com'」に修正してみました。
・「config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/バケット名'」を削除してみました。
・S3の「アクセス権限」から「ブロックパブリックアクセス 」のブロックを全てオフにしてみました。
追記 microposts.rb
class Micropost < ApplicationRecord belongs_to :user validates :content, presence: true, length: { maximum: 1000 } has_many :likes, dependent: :destroy has_many :liked, through: :likes, source: :user has_many :joins, dependent: :destroy has_many :joined, through: :joins, source: :user has_many :comments, dependent: :destroy THUMBNAIL_SIZE = [300, 300] mount_uploader :image, ImageUploader geocoded_by :place after_validation :geocode end
追記 image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick require 'mini_magick' # Include RMagick or MiniMagick support: # include CarrierWave::RMagick if Rails.env.production? include Cloudinary::CarrierWave else storage :fog end # Choose what kind of storage to use for this uploader: # storage :file storage :fog # Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted: def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end # def default_url(*args) # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) # Provide a default URL as a default if there hasn't been a file uploaded: # def default_url(*args) # # For Rails 3.1+ asset pipeline compatibility: # # ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) # # "/images/fallback/" + [version_name, "default.png"].compact.join('_') # end # Process files as they are uploaded: # process scale: [200, 300] # # def scale(width, height) # # do something # end # Create different versions of your uploaded files: # version :thumb do # process resize_to_fit: [50, 50] # end # Add a white list of extensions which are allowed to be uploaded. # For images you might use something like this: def extension_whitelist %w(jpg jpeg gif png) end # Override the filename of the uploaded files: # Avoid using model.id or version_name here, see uploader/store.rb for details. # def filename # "something.jpg" if original_filename # end process resize_to_fill: [300, 300, "Center"] end
追記 _micropost.html.erbで画像表示している部分
<% if micropost.image? %> <%= image_tag micropost.image.url, class:"micropost_image" %> <% else %> <%= image_tag 'no_image.png', class:"micropost_image" %> <% end %> </div>
追記 config/initializers/carrierwave.rb
require 'carrierwave/storage/abstract' require 'carrierwave/storage/file' require 'carrierwave/storage/fog' CarrierWave.configure do |config| config.storage = :fog config.fog_provider = 'fog/aws' config.fog_credentials = { provider: 'AWS', aws_access_key_id: 'ここにはアクセスキーを記入しています', aws_secret_access_key: 'ここにはシークレットキーを記入しています', region: 'ap-northeast-1' } config.fog_directory = 'バケット名を記入しています' config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/バケット名を記入しています' end
その他、追加すべきものがあればご指示ください。