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

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

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

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

Q&A

解決済

1回答

1317閲覧

railsでの画像保存が本番環境だけ反映されない

hide_s

総合スコア1

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

Ruby

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

Ruby on Rails

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

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Active Record

Active Recordは、一つのオブジェクトに対しドメインのロジックとストレージの抽象性を結合するデザインパターンです。

0グッド

0クリップ

投稿2021/12/11 02:46

編集2021/12/11 23:43

前提・実現したいこと

現在、ruby on railsでマッチングサービスを作っています。
フルスタックのrailsにviewにreactを積んでいます。

使用しているもの

  • アカウント管理 devise
  • 管理画面 activeadmin
  • 画像保存 active storage
  • viewでreactコンポーネントを呼び出すために 'react-rails'

また、開発環境、ステージング環境(staging.rbを新規作成)、本番環境の3つともGCSに保存するようにしています。

発生している問題・エラーメッセージ

管理画面から、ユーザーのプロフィール画像を変更すると、開発環境とステージング環境はどちらもうまく反映されるのですが、
本番環境だけ、管理画面のみにしかプロフィール画像の更新が反映されません(ユーザー画面ではプロフィール画像が以前のままになる)。

ログを見てもエラーが出ているわけでもなく、GCSの中には、いずれの環境でも画像はちゃんと保存されていたので、何が問題なのかが見当がついていない現状です。

エラーの検討がついていないため、抽象的な質問になってしまい申し訳ございません。
もし追加情報が必要でしたら、追記いたします。

どこが原因で起きる問題なのかの、可能性の候補だけでもすごく助かります。
よろしくお願いします。

試したこと

  • 開発環境、ステージング環境、本番環境でのテスト。

本番環境のみユーザー画面に反映されないため、コーディング的要素ではなさそう、、、。

  • ログの確認を行ったが、エラーは出ていない(どの環境でも同一のログ)。
  • GCSに保存もできていることも確認済み。
  • キャッシュ設定の確認

追記

この現状での適切なご回答により、キャッシュの設定を確認しましたが、(ご回答、本当にありがとうございます)
解決には至らず他の場所の原因などを知りたいため、引き続き回答を募集させていただきます。

キャッシュ設定は全てオフにしていて、
activeadminを利用している管理画面以外は、全て(ユーザー画面含む)reactコンポーネントを利用しています。
こちらが影響すると思わず、記載していませんでした。申し訳ございません。
よろしくお願いいたします。

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

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

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

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

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

MasaSakano

2021/12/12 00:49

一応、*念のため*、キャッシュ設定はConsoleで確認されましたか? `Rails.application.config.action_controller.perform_caching` を表示させると確認できます。 もう一点、本番環境の ActiveStorageのGCSにおいて、`cache_control` が影響している可能性はあるのかも知れませんか(私は使ったことなくて知りません)。ActiveStorageの本家マニュアル: https://guides.rubyonrails.org/active_storage_overview.html
guest

回答1

0

ベストアンサー

状況から判断して、production環境におけるcache機構が影響しているのではないでしょうか。
もしそうならば、cacheを使っている以上、Railsとしては、何もおかしなことは起こっていないので、エラーが出ないのも当然になりましょう。

もしそうであれば、production環境にて、

ruby

1# config/environments/production.rb 2config.action_controller.perform_caching = false

と設定して、サーバー再起動すれば、更新されるかも知れません。

tipですが、本番環境で試す前に、development環境で、

ruby

1# config/environments/development.rb 2config.action_controller.perform_caching = true

としてみると(注: bin/rails s も忘れないように)、production環境での状況が再現できないでしょうか? もしこれで、development環境においても問題が再現できるならば、production環境で作業する前に、問題がそこにあったことがわかることになります。


なお、すべてのcache機能をオフにすると非効率になりそうです。Rails本家のマニュアル「Caching with Rails: An Overview」などを参考にしながら、最善の方法を探ってみてはいかがでしょうか。

当てずっぽうですけど、これで見当(注: 質問の「検討」は「見当」の誤字)がつけば幸いです。

投稿2021/12/11 15:10

MasaSakano

総合スコア188

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

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

hide_s

2021/12/11 23:34 編集

ご回答ありがとうございます! キャッシュ機能について、完全に失念しておりました。 こちらの記事参考にして、勉強させていただきたいと思います。 本当に丁寧なご回答ありがとうございます。 ---------------------------------------------------------------- もしよろしければ、追加でお聞きしたいのですが、 コードを確認したところ、他の方が、開発も本番もキャッシュをオフにしていました。 (エンハンス業務のため、アプリ自体は他の方が作成していました) フルスタックrailsを使っているからあまり考える必要がないと思って記載したなかったのですが、 active adminを利用している管理画面以外は、 gem 'react-rails' を使ってViewのhtml(erb)からreactコンポーネントを呼び出して表示させています。 こちらは、あまり関係ないですかね?
MasaSakano

2021/12/12 00:52

react-rails については全く知りません……。 本番環境においてGCSへのアクセス失敗であれば何らかのログかエラーメッセージが出ることでしょう。そうではないということなので、キャッシュ関係が一番怪しそうと直感的には思いますが、何とも。
hide_s

2021/12/13 08:07

そうですよね、、、。 ご助言いただいた通り、キャッシュ関係だなと思うので、もう少し調べて確認してみます。 ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問