[RUBY] Créez un environnement de développement local pour les didacticiels Rails avec Docker-Introduisez Bootstrap et Font Awesome avec Webpack-

introduction

Nous créons un environnement de développement local avec Docker et réexécutons le didacticiel Rails.

--Rails 6 compatible avec la dernière version du tutoriel Rails (à partir de 2020.8.6)

Cette fois, c'est la partie correspondant au chapitre 5 du tutoriel Rails

Le contenu des chapitres 3 et 4 n'a pas d'importance,

Chapitre 5 ** 5.1.2 ** Bootstrap et la partie CSS personnalisée se précipitent enfin dans le marais Webpack

Plus précisément, installez et gérez Bootstrap et Font Awesome avec Yarn et Webpack sans utiliser de gemmes.

De plus, j'écrirai plus de tests, donc je remplacerai cette zone par RSpec et continuerai.

La branche à la fin du chapitre 5 est la mise en page de remplissage https://github.com/dev-naokit/sample_app_on_docker/tree/filling-in-layout

La première Création d'un environnement de développement local pour les didacticiels Rails avec Docker (Rails 6 + PostgreSQL + Webpack) --Qiita

Deuxième fois Création d'un environnement de développement local pour les didacticiels Rails avec Docker - Présentation de RSpec et déploiement de Heroku avec CircleCI --- Qiita

Application développée personnellement mdClip <éditeur de démarques en ligne>

Lorsque vous utilisez le conteneur Docker, utilisez les commandes du terminal comme il convient.

$ docker-compose run app ...

Ou

$ docker-compose exec app ...

Veuillez remplacer par.

Présentation de Bootstrap et Fontawesome

Rails 6 présente Webpack en tant que bundler de modules JavaScript, Pour les images et CSS, Sprocket traditionnel est utilisé comme pipeline d'actifs, Seul JavaScript est désormais compilé avec Webpack

application.html.erb

Réécrire le contenu de <head>

app/views/layouts/application.html.erb

<head>
  <title><%= full_title(yield(:title)) %></title>
  <%= csrf_meta_tags %>
  <%= csp_meta_tag %>
  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  #(Ajoutez la ligne ci-dessous) Autoriser webpack à gérer CSS
  <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  #Par défaut, webpacer compile et génère le dossier du pack pour JavaScript.
  <%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
  <!--[if lt IE 9]>
      <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/r29/html5.min.js">
      </script>
    <![endif]-->
</head>

Installer Bootstrap avec du fil

** Comme mentionné dans Dépannage dans cet article et dans les prochains articles, différentes versions de Bootstrap nécessiteront la réécriture des sélecteurs CSS et des classes HTML. Si vous n'êtes pas très particulier à ce sujet, je pense qu'il vaut mieux le faire correspondre avec le tuteur Rails original **

Spécifiez la version du package avec yarn add

yarn add [email protected]

Dépanner au chapitre 7 Création d'un environnement de débogage sur un conteneur --- Création d'un environnement de développement local pour les didacticiels Rails avec Docker --- Qiita Officiel de fil yarn add | Yarn

jquery et popper sont des packages requis pour Bootstrap Font Awesome sera nécessaire plus tard, alors installez-le ('@ Fortawesome' n'est pas une faute de frappe)

yarn add bootstrap jquery popper.js @fortawesome/fontawesome-free

Modules installés Vous pouvez le vérifier avec package.json

application.js

app/javascript/packs/application.js

Ajoutez ce qui suit

require("bootstrap");
require("@fortawesome/fontawesome-free");

Il y avait des informations qui incluaient également require ('jquery'), Bootstrap semble automatiquement require ('jquery'), vous n'avez donc pas besoin de l'écrire ici.

En cours de vérification de divers défauts J'ai remarqué que jquery est chargé sans require ('jquery') Il semble que plusieurs lancements de jquery puissent entraîner un dysfonctionnement de JavaScript. La situation actuelle se déroulera telle quelle

(Je publierai un article de référence ci-dessous)

environment.js

Rendre jQuery appelable de n'importe où

config/webpack/environment.js

const { environment } = require('@rails/webpacker')
var webpack = require('webpack');

environment.plugins.append(
    'Provide',
    new webpack.ProvidePlugin({
        $: 'jquery/src/jquery',
        jQuery: 'jquery/src/jquery',
        Popper: ['popper.js', 'default']
    })
)

module.exports = environment

En faisant cela, vous n'avez pas besoin d'écrire ʻimport $ from'jquery '; `à chaque fois.

CSS

ʻApp / javascript / stylesheets / application.scss` (nouveau)

Ajouté ci-dessous

@import '@fortawesome/fontawesome-free/scss/fontawesome';
@import 'bootstrap/scss/bootstrap';

application.js

app/javascript/packs/application.js

Ajoutez ce qui suit

import '@fortawesome/fontawesome-free/js/all';
import "../stylesheets/application.scss";

référence

[Rails 6: Comprenez parfaitement Webpacker + Yarn + Sprockets et écrivez JavaScript: Partie 1 (traduction) | TechRacho ~ Engineer's "?" To "!" ~ | BPS Co., Ltd.](https: // techracho.bpsinc.jp/hachi8833/2020_01_16/85940)

[L'environnement de développement Rails 6+ Webpacker a été mis en place par un homme fort de JS (traduction) | TechRacho ~ Engineer's "?" To "!" ~ | BPS Co., Ltd.](https: //techracho.bpsinc) .jp / hachi8833 / 2019_11_28 / 83678)

À propos de la gestion du CSS

Il semble qu'il soit possible de compiler non seulement JavaScript mais aussi des images et CSS, le tout avec Webpack

Actuellement, il n'y a pas de changement dans la situation où la compilation d'actifs par Sprocket et Webpacker coexistent.

ʻApp / javascript / stylesheets / ... est compilé et le contenu est dans `

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>

Sortie avec

ʻApp / assets / stylesheets / ... est compilé et le contenu est également dans `

  <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>

C'est la situation qui est sortie

En d'autres termes, même si vous éditez le CSS et le SCSS dans ʻassetscomme dans le tutoriel, Même si vous modifiez le CSS et le SCSS dans lespacks`, la situation sera reflétée dans la vue.

Les styles Bootstrap et Font Awesome sont importés par ce dernier et reflétés dans la compilation et la vue

Je pense que la feuille de style que vous éditez n'a pas d'importance pour continuer avec le tutoriel à l'avenir. Vous voudrez peut-être garder à l'esprit l'ordre des appels dans le

** Au fait, si vous modifiez le CSS dans les packs, vous pouvez bénéficier du rechargement à chaud de webpack-dev-server Plus précisément, si vous enregistrez vos modifications, le navigateur se rechargera automatiquement et vous pourrez voir vos modifications immédiatement (avec un certain délai ...) **

Lors de la création de custom.scss dans le déroulement du didacticiel Rails Ce n'est pas grave si vous écrivez ce qui suit dans app / javascript / packs / application.js

import "../stylesheets/custom.scss";

(Je vais continuer avec cette spécification)

Troubleshoot

Le style Bootstrap est étrange

La zone autour de l'en-tête ne s'affiche probablement pas correctement Cela dépend de la version de Bootstrap, donc si vous l'installez comme décrit dans cet article La dernière version de Bootstrap ver.4.5 (à partir de 2020.8.7) sera introduite (3.4.1 dans le didacticiel Rails)

La balise navbar-inverse n'est plus disponible dans Bootstrap 4.

  <header class="navbar navbar-expand-md bg-dark navbar-dark bg-dark">

Nécessite des modifications mineures telles que le remplacement par Nous prévoyons de publier une branche modifiée à la fin de ce chapitre.

Il est également possible de prendre des mesures telles que la spécification de la version au moment de "yarn add".

Test lié à RSpec

Comment réécrire ʻassert _... `?

Peut être utilisé tel quel

"Je veux tester en écrivant assert xxx même dans RSpec" => Vous pouvez le faire tout de suite! --Qiita

Appliquer ApplicationHelper pour le test ...

ʻInclure Application Helper dans un fichier _spec.rb` séparé

Sinon, écrivez-le dans spec / rails_helper.rb Il est requis dans chaque _spec.rb, vous ne devriez donc pas avoir besoin de l'écrire individuellement

en conclusion

Cette partie a été la partie la plus difficile du développement d'une application personnelle dans l'environnement Rails 6.

Le contenu peut ne pas correspondre à votre taille et contenir des erreurs,

Nous espérons que cela aidera ceux qui développent des applications dans l'environnement Rails 6 ainsi que la création de l'environnement pour les didacticiels Rails.

Recommended Posts

Créez un environnement de développement local pour les didacticiels Rails avec Docker-Introduisez Bootstrap et Font Awesome avec Webpack-
Créez un environnement de développement local pour les didacticiels Rails avec Docker (Rails 6 + PostgreSQL + Webpack)
[Rails] [Docker] Le copier-coller est OK! Comment créer un environnement de développement Rails avec Docker
Comment quitter Docker pour Mac et créer un environnement de développement Docker avec Ubuntu + Vagrant
Procédure de création d'un environnement de développement d'applications Rails avec Docker [Rails, MySQL, Docker]
Créer un environnement de développement pour Django + MySQL + nginx avec Docker Compose
Étapes pour créer un environnement de développement Ruby on Rails avec Vagrant
Créer un environnement de développement PureScript avec Docker
Créer un environnement de développement Wordpress avec Docker
[Copier et coller] Créez un environnement de développement Laravel avec Docker Compose, partie 2
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
Créez une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 1 Construction de l'environnement
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Ubuntu)
Modèle: créer un environnement de développement Ruby / Rails avec un conteneur Docker (version Mac)
Créez un environnement de développement d'applications Web qui utilise Java, MySQL et Redis avec Docker CE pour Windows
Créez rapidement un environnement de développement WordPress avec Docker
[Win10] Créer un environnement de développement JSF avec NetBeans
Créer un environnement de développement pour Docker, Java, vs code
Créer un environnement de développement Java avec VS Code
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Manuel de construction de l'environnement de développement stable pour "Rails6" avec "Docker-compose"
J'ai créé un environnement de développement avec rails6 + docker + postgreSQL + Materialise.
Créez un environnement de développement «Spring Thorough Introduction» avec IntelliJ IDEA
Créez un environnement de développement où les points d'arrêt de Ruby on Rails fonctionnent sous Windows
Créer un environnement local Couchbase avec Docker
Créer un environnement Node.js avec Docker
Créer un environnement Tomcat 8.5 avec Pleiades 4.8
Création d'un environnement de développement Java (pour Mac)
Créer un environnement de développement Jooby avec Eclipse
J'ai construit un environnement de rails avec docker et mysql, mais j'étais malade
Créez un environnement de test d'application Windows avec Selenium Grid, Appium et Windows Application Driver
Création d'un environnement de développement pour les applications Web Java avec Docker pour Mac Part1
[Docker] Comment créer un environnement virtuel pour les applications Rails et Nuxt.js
Créez un environnement de développement sur AWS EC2 avec CentOS7 + Nginx + pm2 + Nuxt.js
Créer un environnement de développement d'applications Web Java avec Docker pour Mac Part2
Construction de Rails 6 et environnement PostgreSQL avec Docker
Créer un environnement de développement Java sur Mac
Comment créer un environnement Rails 6 avec Docker
Construction d'un environnement de développement simple Docker + Django
Présentation de # 2 git et rubocop pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails
Créez un environnement de développement pour créer des applications Ruby on Jets + React avec Docker