2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails6】AWS EC2デプロイ時に背景画像を表示

Last updated at Posted at 2021-02-21

前提

・AWS EC2は導入済み

・背景画像は『app/assets/images』フォルダに格納している

バージョン

rubyのバージョン ruby-2.6.5
Railsのバージョン Rails:6.0.0

はじめに

background-imageプロパティを使って、Herokuやローカル上では背景画像が表示されているのに
AWS EC2でデプロイしたら、背景画像が表示されないので、それを解決したい方向けの記事となっています。

概要

以下2点を変更して、再度デプロイすると背景画像が表示されます。

①CSSファイルをSCSSファイルに変更する。

②背景画像を指定するCSSの記述をbackground-image: image-url("画像名");に変更する。

詳細

①CSSファイルをSCSSファイルに変更する。

以下のどちらかのパターンで行えます。

・ファイル名の拡張子を、 .CSS → .SCSSに変更する。
・背景画像を表示させているviewの拡張子.SCSSファイルに、②の内容を記述する。

※私は後者を選びました。というのも、SCSSに拡張子を変更してしまうと、それまで記述したCSSの記述に影響が出るためです。

②背景画像を指定するCSSの記述をbackground-image: image-url("画像名");に変更する。

SCSSファイルの内容を以下のように変更します。

(変更前)

app/assets/stylesheets/~.scss
background-image: url(画像名);

(変更後)

app/assets/stylesheets/~.scss
background-image: image-url("画像名");

※""(ダブルクォーテーション)を忘れないようにしてください

③デプロイして確認

確認し問題なければ終了です。
なお、ローカル内でも、同様の表示ができます。

背景画像が表示されない理由

表示されない理由としては、Asset Pipelinの仕組みが関係しています。

仕組みの1つとして、※1)キャッシュされていた既存のアセットを無効化を行います。というのも、キャッシュの効果を使った悪用を防ぎ、デプロイさせる役割をしているためです。

変更前のbackground-image: url(画像名);記述では、「url」がファイル名は以前と変化していないと認識され、既存のキャッシュとしてみなされます。

したがって、既存の古いキャッシュでは読み込めない状態となるので、、画像を読み込んでもらえません。

(変更前)

app/assets/stylesheets/~.scss
background-image: url(画像名);

そこで、
「url」を指定するのではなく、Railsが指定している「image-url」メソッドを使うことで、デプロイ時にapp/assetsから読み込めるようにします。

(変更後)

app/assets/stylesheets/~.scss
background-image: image-url("画像名");

※1) キャッシュとは、データを一時的に保存することで、データの処理速度を速める考え方、仕組みのこと。

補足

AWS EC2をデプロイする方法を以下に載せていますので、よろしければご参考ください。
https://qiita.com/narimiya/items/2e642b60baa4002c4bee

assetsディレクトリに関しても以下に載せていますので、よろしければご参考ください。
https://qiita.com/narimiya/items/73ca907c74b4c615f39d

以上です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?