質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2876閲覧

Renderでデプロイすると画像が表示されない

taroyama_taro

総合スコア7

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2023/01/13 02:56

編集2023/01/13 03:00

前提

RailsでActive Storageを用いた画像表示機能を含むアプリを作っています。
各種gemはインストール済みです

Gemfile

1gem 'mini_magick' 2gem 'image_processing', '~> 1.2' 3gem 'activestorage-validator'

念のためターミナルで

brew install imagemagick bundle install rails active_storage:install

を実行しましたが、リポジトリに変更はありませんでした。

発生している問題

ローカルでは問題なく画像が表示されるのですが、本番環境ではうまくいかないことがあり、下のようになってしまいます。
←うまく表示されない時

ただ、一度画像を差し替えると問題なく表示されるようになります。
編集画面
↓↓
問題ない時

試したこと

Renderの無料プランでのデプロイのため、画像表示等サーバーの負荷?通信量?(この辺りは全くわかりません)が大きいと表示に問題が出てしまうのではと思い、mini_magickを用いて画像のサイズを小さくして表示するようにしました。

app/views/users/show.html.erb

1<%# 編集前 %> 2<% @user.images.each do |image| %> 3 <%= image_tag(image, class: "profile-image") %> 4<% end %> 5 6<%# 編集後 %> 7<% @user.images.each do |image| %> 8 <%= image_tag(image.variant( resize: "300x300>" ).processed, class: "profile-image") %> 9<% end %>

すると今度は、そもそもページが読み込まれなくなってしまいました。
Railsエラー文
なお、サイズを小さくした画像が表示されないページは読み込まれますが、画像は表示されません。
←これに置き換えられてしまいます

次に、表示画像の編集画面(遷移できます)から画像を差し替えると、今度は正常に表示され、正しく圧縮されていました。
編集画面
↓↓
※画像左側が圧縮前、見切れている右側が同じファイルの圧縮後です
イメージ説明

問題まとめ

編集後の画像は問題なく圧縮、表示されていることから、問題ははじめに仮定したサーバー云々ではなく、デプロイ時にActive Storageのデータが正しく呼び出されなかったからではないかと思いました。
しかし、どの設定に問題があるのか等がわからない状況です。
ご教示いただけると嬉しいです。

当該のソースコード

デプロイに関係ありそうな部分はここでしょうか

bin/render

1#!/usr/bin/env bash 2# exit on error 3set -o errexit 4 5bundle install 6bundle exec rake assets:precompile 7bundle exec rake assets:clean 8bundle exec rake db:migrate

実現したいこと

  • いつでも画像が正しく表示されるようにしたいです
  • デプロイの度にデータベースをリセットするのは避けたいですが、ページや画像が表示なくなってしまうくらいなら、抵抗はありません

補足情報(FW/ツールのバージョンなど)

Ruby: 2.6.5
Rails: 6.0.6
image_processing: 1.12.2
mini_magick: 4.12.0(Gemfile.lockより、>= 4.9.5, < 5という記述もあり)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Render.comは、Herokuと同様に画像などのストレージは用意されていないはずです。
画像をアップロードする場合、AWSのS3など外部ストレージサービスを利用するのが一般的かと思います。
参考:https://qiita.com/hmmrjn/items/7cc5e5348755c517458a

投稿2023/01/13 03:37

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

taroyama_taro

2023/01/13 05:54

おっしゃる通りです、完全に頭から抜けていました…。 導入はまだですが、一旦解決とさせていただきます。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問