Supprimez les "actifs" et les "turbolinks" dans "Rails6".

Objectif de cet article

Cet article utilise Webpacker avec Rails 6 Il s'agit d'un article qui enregistre la procédure de suppression du «pipeline d'actifs» et des «turbolinks».

--Confirmation et révision des contenus de développement --Mémorandum de procédure de développement ――Si cela aide les autres même un peu

J'ai pensé et créé cet article.

Pourquoi avez-vous décidé de supprimer des éléments?

À partir de Rails6, Webpacker est utilisé comme bundler de module standard. Les actifs des rails neufs sont toujours vivants, Lors de l'installation initiale sur les actifs, le répertoire javascript n'est plus initialement créé dans Rails 6. De plus, les mises à jour des gemmes de pignons stagnent et le nouveau JavaScript ES2015 Alors que les frameworks frontaux tels que React et Vue deviennent courants Éloignez-vous du double système d'actifs et de Webpacker Je voulais expérimenter le développement uniquement avec Webpacker et je l'ai exécuté.

Environnement de développement

Cette fois, je développe avec Docker-compose l'article que j'ai écrit plus tôt.

L'article de Qiita pour plus de détails sur la construction de l'environnement

Manuel de création d'un environnement de développement stable pour «Rails6» avec «Docker-compose»

Veuillez confirmer.

1. Supprimer des éléments

Dans Rails 6 où Webpacker est devenu la norme, il est agrégé sous app / javascript sans utiliser d'actifs. Je souhaite supprimer des éléments.

Supprimer le répertoire app / assets

2. Décrivez la lecture dans application.js

Chargez bootstrap en tant que framework frontal avec jquery utilisé dans Ajax, etc. De plus, en chargeant application.scss, js et css sont gérés de manière centralisée par webpacker.

app/javascript/packs/application.js


require("jquery")
require("bootstrap")

import "../stylesheets/application.scss"

3. Créez un répertoire de feuilles de style et un fichier application.scss sous le répertoire javascript

Décrivez le chargement de bootstrap dans application.scss.

app/javascript/stylesheets/application.scss


@import "~bootstrap/scss/bootstrap";

4. Modifiez layouts.scss

Maintenant que nous n'utilisons plus d'actifs, changez les mises en page en stylesheet_pack_tag. De plus, comme Turbo Link n'est pas utilisé, il sera remplacé par le code suivant.

app/views/layouts/application.html.erb


<%= stylesheet_pack_tag 'application', media: 'all' %>
<%= javascript_pack_tag 'application' %>

5. Supprimer les turbolinks

Dans Rails 6, il semble qu'il ne puisse pas être complètement supprimé à moins qu'il ne soit supprimé à la fois avec du fil et des gemmes.

Supprimer avec yarn

yarn remove turbolinks

Supprimer avec Gemfile

gem 'turbolinks', '~> 5'
bundle install

De plus, supprimez "turbolinks" de app / javascript / packs / application.js.

6. Modifiez config / webpack / environment.js

Pour utiliser $ dans jQuery en Ajax, écrivez ce qui suit.

config/webpack/environment.js


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

const webpack = require('webpack')
environment.plugins.prepend('Provide',
    new webpack.ProvidePlugin({
        $: 'jquery/src/jquery',
        jQuery: 'jquery/src/jquery'
    })
)

module.exports = environment

7. Modifiez webpacker.yml

Puisque j'utilise docker, j'obtiens une erreur s'il s'agit de localhost. Nous corrigerons et répondrons aux trois emplacements suivants.

config/webpacker.yml


check_yarn_integrity: false
host: 0.0.0.0
public: 0.0.0.0:3035

8. Ajoutez le port à docker-compose.yml

Ajoutez un port pour la correction effectuée en 8.

- "3035:3035"

9. Abaissez la version des pignons

Il semble que les actifs ne peuvent pas être complètement supprimés sans abaisser la version des pignons dans le Gemfile. https://github.com/rails/sprockets/issues/643

Modifier le gemfile

gem 'sprockets', '~> 3.7.2'
bundle update sprockets

10. Présentation du contremaître

foreman est un outil capable de lire Procfiles et de gérer plusieurs processus. Décrire le processus géré par l'application dans Procfile Cela correspond en le plaçant dans la racine de l'application. URL de référence: foreman

gem 'foreman'

Procfile.dev


web: bundle exec rails s -b 0.0.0.0 -p 3000
webpacker: bin/webpack-dev-server

Installation groupée.

bundle install

Le fichier bash a également été modifié pour correspondre au contremaître.

qs.bash


rails_server() {
  compose_stop $app
  rm_pids
  $dc run $rm --service-ports $app bundle exec foreman start -f Procfile.dev
}

La suppression des «actifs» «turbolinks» doit être effectuée ci-dessus.

finalement

Si possible, Ajax voulait également rompre avec JQuery, Il n'a pas encore été remplacé en raison d'un manque d'apprentissage. Si vous terminez l'étude, vous pouvez dire que vous êtes enfin passé à ES2015.

Parce que c'est un débutant, il peut y avoir des contenus de travail et des erreurs. Nous vous serions reconnaissants de bien vouloir nous faire savoir si vous avez des avis.

Recommended Posts

Supprimez les "actifs" et les "turbolinks" dans "Rails6".
Désactiver les turbolinks dans les rails
Activer jQuery et Bootstrap dans Rails 6 (Rails 6)
Fonction CRUD et MVC dans Rails
Rails et données de forme
Group_by dans Rails
[Rails] Classement et pagination par J'aime
Rails valides et invalides?
Association de modèles dans Rails
Ajout de colonnes dans les rails
Changer la date et l'heure en notation japonaise dans Rails
Implémentation de calendrier simple de Rails Gem et branchement conditionnel
Utiliser des images avec des rails
Comprendre la migration dans les rails
Obtenez des informations de localisation avec Rails et triez par ordre croissant
Diviser routes.rb dans Rails6
Markdown implémenté dans Rails
Différences entre l'espace de noms, le module, la portée et comme dans le routage Rails
[Rails] Présentation de Travis CI et rester coincé dans db: create
Politique de mise en œuvre pour enregistrer et afficher dynamiquement le fuseau horaire dans les rails
Implémentez la fonction de connexion dans Rails simplement avec le nom et le mot de passe (1)
Implémentez la fonction de connexion dans Rails simplement avec juste un nom et un mot de passe (2)
Implémentez la fonction de connexion simplement avec le nom et le mot de passe dans Rails (3)
Implémenter la fonction d'enregistrement des utilisateurs et la fonction d'enregistrement de l'entreprise séparément dans Rails concevoir
[Rails] Find_each fait une boucle sans fin et consomme de la mémoire en production
Supprimer les sauts de ligne et les tabulations consécutifs avant et après dans Java
[Rails] Obtenir UserAgent sur le contrôleur
Poteaux Rails et liaison utilisateur
[Rails] nécessitent une méthode et une méthode d'autorisation
Registres du didacticiel Rails et mémorandum n ° 0
chemins de rails et méthodes d'URL
Maquette et stub dans RSpec
Implémenter l'authentification LTI dans Rails
Les rails sont difficiles et douloureux!
Les rails sont difficiles et douloureux! Ⅱ
Gemme souvent utilisée dans les rails
Afficher le calendrier mensuel dans Rails
[Rails] Comment désactiver les turbolinks
[Rails] strftime ceci et cela
Utilisez plusieurs cases à cocher dans Rails6!
Serveur Web et serveur d'applications Rails
Implémentation de la recherche de balises de hachage comme Insta et Twitter dans Rails (pas de gemme)
[Webpacker] Résumé de l'installation de Bootstrap et jQuery dans Rails 6.0
(Ruby on Rails6) Créer une base de données et l'afficher dans une vue
Comment supprimer de grandes quantités de données dans Rails et problèmes