現在AWS(amazon linux2)にRailsアプリをデプロイし、ブラウザでの動作確認をしています。
development環境で表示されていた画像がproduction環境で表示されません。
現状としては下記の状況になっています。
- 画像拡張子はpng
- コードでは
image_tag
ヘルパーを利用している - productionモードでは画像が表示されない(alt属性のyyyが文字で表示される)
- 表示されない画像は
app/assets/images/credits
フォルダ内に存在している - imagesフォルダ直下の画像は表示されている
- ブラウザで確認すると
<img src="/images/credits/visa" alt="Visa" width="40" height="25">
と表示される
エラーログでみてみると
bash
1ActionController::RoutingError (No route matches [GET] "/images/credits/visa")
と表示されています。
- Rails、production実行時、assetsフォルダ以下がno route matchesでアクセス出来ない - naichi's lab
- Rails Asset Pipelineがうまくいかないときの問題の切り分けかた - Qiita
を参考にしましたが全くわかりません(m_ m)
もしわかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m _m)
期待する動作
app/assets/images/credits
フォルダ内の画像がaws環境で表示されるようにしたい
エラー内容
app/assets/images/credits
フォルダ内の画像がimage_tag
ヘルパーを利用して表示できない- ログ上では下記のエラーが発生している
ActionController::RoutingError (No route matches [GET] "/images/xxx/yyy"):
動作環境
Rails | AWS |
---|---|
Ruby: 2.4.5 | Amazon linux2 |
Rails: 4.2.11.1 | nginx: 1.16.1 |
Devise: 4.7.1 | EC2、RDS(MySQL) |
dotenv-railsを使用 | HTTPS(Route53)設定済 |
試したこと
config/initializers/assets.rb
にapp/assets/images/credits/*.png
を追加- unicornを停止、
bundle exec rake assets:precompile RAILS_ENV=production
を実行 - インスタンスを再起動
該当しそうなコード
- (1 / 3)config/initializers/assets.rb
ruby
1# config/initializers/assets.rb 2Rails.application.config.assets.precompile += [ 'images/credits/*.png' ]
- (2 / 3)config/environments/production.rb
ruby
1# config/environments/production.rb 2Rails.application.configure do 3 : 4 config.serve_static_files = true 5end
- (3 / 3) 該当erbファイル
erb
1<div class="text-center"> 2 <%= image_tag "credits/#{(@card["brand"].gsub(" ","")).downcase}", size: '40x25' % 3</div> 4
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/10 11:31