1
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アプリにBootstrap4を導入してみた【初心者向け】

Last updated at Posted at 2020-12-21

この記事の対象者

  • Ruby on Rails6(以下、Rails6)を学び始めの方
  • Rails6でBootstrap4を使ってみたい方
  • プログラミング初心者(書いてる人も初心者です)
  • エンジニアを目指してポートフォリオ作成中で、サクッとイイ感じのCSSを当てたい方
  • Rails6にBootstrap4使いたいけど、記事によって記述が違うので、どの方法でインストールしようか迷ってる方

↑自分自身がこのような状態だったので、記事にしようと思いました。

(追記:注意事項 2020/12/25)
ローカル開発環境では下記の通りで適用できます。
しかし、herokuやAWSといった本番環境(production)だとBootstrapが反映できないため、恒久対応方法を確認中です。

暫定対応している方法は最後のほうに記載しました。

目標

  • Rails6でBootstrap4を使うスタートラインに立つ

そのためこの記事は、Rails6アプリにBootstrap4をインストールし、動作確認をするまでの手順を書いています。

そもそもBootstrapとはなんぞや?

Bootstrapとは、HTML・CSS・JavaScriptを利用したWebデザインフレームワーク。
レスポンシブルデザインでスマートフォンなどの端末表示にも対応。
なので、アプリの見た目をサクッと見栄えよくさせたいときにオススメ。
Bootstrap公式サイト

Bootstrap5のα版=テスト版も出ているようです(2020年12月現在)
この記事は 「Bootstrap4導入」 の記事です。ご注意を。

Bootstrap4の導入方法について

Rails6にBootstrap4を導入する方法は、gemで導入する方法とwebpackerを利用する方法と複数ありますが、今回は後者の「webpackerを利用」することにしました。

導入前にググったところ、gem導入だとBootstrapのカスタマイズができない(?)とかの記事が散見されたり、自分で一回gem方式で導入して何だかしっくりこなかったので…

それぞれのメリット・デメリットは、時間があれば追ってみようと思います。

さて、作業してみましょう。

おっと、導入作業の前に…

yarnはインストールしてある前提で進めます(既にインストール済みの方多いと思いますが)
またBootstrap4を適用するRailsプロジェクト(アプリケーション)は、 rails new で作成しておいてください。

作業環境(参考)

参考までに、私の作業環境は下記の通りです。

  • MacOS Catalina 10.15.7
  • Ruby 2.6.5
  • Ruby on Rails 6.0.3.4

導入予定のBootstrap4関連一式(参考)

今回インストールするBootstrap4関連ファイルは下記の通り。
Bootstrap4と一緒に、関連ファイルのjQuery、popper.jsも導入します。
(2020年12月時点)

  • Bootstrap4.5.3
  • jQuery 3.5.1
  • popper.js 1.16.1

手順

インストールする。

ターミナルで yarn add bootstrap jquery popper.js を入力して実行。

上記コマンドでBootstrap4はもちろん、一緒にjQuery、popper.jsもインストールできました。
(厳密にバージョン指定したければ yarn add bootstrap@4.5.3 jquery@3.5.1 popper.js@1.16.1 のような書き方がいいかも)

application.jsにBootstrapを読み込む内容を記述。

以下のような感じで。

app/javascript/packs/application.js
# <省略>
require("@rails/ujs").start()
require("@rails/activestorage").start()
require("channels")

# 以下2行を追記
import 'bootstrap'  # <-追記
import 'bootstrap/scss/bootstrap.scss'  # <-追記

# <省略>

スタイルシートの拡張子を変更。

(追記:2020/12/23)この作業はSCSSではなく普通にCSS使う方は不要かも。

app/assets/stylesheets/application.css → application.scss のように拡張子を変更。
デフォルト記載の項目は全削除しました。

他のCSSファイルを読み込みたい場合は、application.scssに適宜追記してください。

app/assets/stylesheets/application.scss
@import "hogehoge.css";

※私はBootstrap用のReset.cssをimportしたりしました。
Reboot.css参考: Colissさんの記事

動作確認

導入できたら、動作確認します。
index.html.erb内に、Bootstrapのclassを適用した文言を書いてみます。
下記のような記述なら、実際に表示して文字が黄色・背景が青で表示されたら適用済み。
Bootstrapの導入作業は完了です。

index.html.erb
<!-- 文字色:黄色、背景色: -->
<p class="text-warning bg-primary">Bootstrapテスト</p>

本番環境でBootstrapが反映されない時の暫定対応

(追記: 2020/12/25)
本番環境(production。私の場合はAWS EC2利用でした)にデプロイしたところ、Bootstrapが反映されない自体に遭遇。
ブラウザの検証ツールで確認したところ、Bootstrap関連ファイルがうまく読み込めてないかもしれません。
(アセットパイプライン関連な何か?)

そこで力技ですが、本番環境のときだけ、外部ライブラリを参照して暫定対応することにしました。
Bootstrap公式のjsdelivrのタグを直接読み込むことにしました。

app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
  <head>
    <title>Fishing Archive</title>
    <%= csrf_meta_tags %>
    <%= csp_meta_tag %>

    <%= stylesheet_link_tag 'application', media: 'all' %>

    <%#= ここからBootstrap本番反映の暫定措置。本番のときだけ反映する。 %>

    <% if Rails.env.production? %>
      <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
      <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
      <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous">
      <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script>
    <% end %>

    <%#= ここまでBootstrap本番反映の暫定措置 %>

    <%= javascript_pack_tag 'application' %>
  </head>

恒久対応策が分ったら追記します。

最後に

Bootstrapはちょっとしたデザインには便利ですね。いろいろ触って遊んでみようと思います!

なお初めてのQiita投稿ということで、マークダウン記法の練習も兼ねて書きました。
RailsもBootstrapも初心者なので、説明不足や誤りあれば指摘いただけると幸いです。

1
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
1
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?