[RUBY] [Rails 6] À propos des principaux joyaux

introduction

Lors de l'utilisation de Rails, j'ai utilisé puma '', webpacker '' et `` écoutez '' bien sûr, mais honnêtement, je n'ai pas vraiment compris ce qu'ils signifiaient. Je voudrais résumer ici les principaux joyaux.

Gemme principale par défaut de Rails

Voici les gemmes par défaut générées par Rails 6.

Gemfile


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 6.0.3'
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
# Use Puma as the app server
gem 'puma', '~> 4.1'
# Use SCSS for stylesheets
gem 'sass-rails', '>= 6'
# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
gem 'webpacker', '~> 4.0'
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
gem 'turbolinks', '~> 5'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.7'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 4.0'
# Use Active Model has_secure_password
# gem 'bcrypt', '~> 3.1.7'

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

# Reduces boot times through caching; required in config/boot.rb
gem 'bootsnap', '>= 1.4.2', require: false

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '~> 3.2'
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  # Easy installation and use of web drivers to run system tests with browsers
  gem 'webdrivers'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
```

 Je vais expliquer chacun d'eux.

sqlite3
 Une bibliothèque de langage C qui implémente le moteur de base de données SQL.
 Puisqu'il n'y a pas de fonction de sécurité telle que pas de définition de mot de passe, il est essentiellement utilisé dans l'environnement de développement et l'environnement de test, et un autre moteur de base de données est utilisé dans l'environnement de production.

https://www.sqlite.org/index.html

puma
 Utilisé pour créer un serveur HTTP 1.1 pour les applications Web Ruby. Utilisez le pool de threads pour gérer les demandes.

https://puma.io/
https://github.com/puma/puma

sass-rails
 Vous pouvez utiliser Sass (SCSS) avec des rails.

https://github.com/rails/sass-rails

webpacker
 Un wrapper Webpack qui implémente les principaux paramètres couramment utilisés dans les applications Web en standard. webpack est un bundler de modules statiques pour les dernières applications JavaScript [^ 1].

 [Fonctions principales]
 ・ [Webpack 4.x.x](https://webpack.js.org/)
 -Fonctionnement automatique du code à l'aide de plusieurs points d'entrée [^ 2]
 · Convertissez la nouvelle syntaxe JavaScript (ES6) pour qu'elle fonctionne dans le navigateur
 ・ Abondantes réalisations dans des frameworks modernes tels que React, Vue.js, PostCSS, etc.

https://github.com/rails/webpacker

Jbuilder
 Jbuilder fournit un DSL simple (langage spécifique au domaine) pour déclarer des structures JSON.
https://github.com/rails/jbuilder

turbolinks
 Suivi des liens plus rapide dans les applications Web.
https://github.com/turbolinks/turbolinks-classic

bootsnap
 Il raccourcit le temps de démarrage en optimisant le traitement au moment du démarrage des rails (cache le chemin et le résultat de la compilation ruby).
 Il prend également en charge ActiveSupport et YAML.

https://github.com/Shopify/bootsnap/blob/master/README.jp.md

byebug
 Outil de débogage.

https://github.com/deivid-rodriguez/byebug

web-console
 Une bibliothèque de débogage qui vous permet de lancer une console dans View et de voir l'état des variables et des paramètres. Il devient plus facile de déboguer la partie erreur.

https://github.com/rails/web-console

listen
 Il peut détecter les modifications des fichiers et les utiliser comme hooks pour le traitement.

 [Fonctions principales]
 -Détecte les modifications, ajouts et suppressions de fichiers
 -Surveiller plusieurs répertoires

https://github.com/guard/listen

spring
 Préchargeur d'application Rails [^ 3]. Il accélère le développement en gardant l'application en arrière-plan, éliminant ainsi le besoin de lancer l'application à chaque fois que vous exécutez un test ou une migration.

https://github.com/rails/spring

spring-watcher-listen
 Au lieu d'interroger le système de fichiers [^ 4], Spring utilise Listen pour surveiller les modifications du système de fichiers.

https://github.com/jonleighton/spring-watcher-listen/

capybara
 Aide à tester les applications Web en simulant la façon dont les utilisateurs réels interagissent avec l'application.

https://github.com/teamcapybara/capybara
https://en.wikipedia.org/wiki/Capybara_(software)

selenium-webdriver
 Comme capybara ne prend pas en charge JavaScript, simulez-le avec sélénium-webdriver.

https://github.com/SeleniumHQ/selenium/tree/trunk/rb

webdrivers
 Il est destiné à permettre l'utilisation du navigateur Web et l'obtention d'informations à partir d'un logiciel externe.

https://github.com/titusfortner/webdrivers

tzinfo-data
 Utilisé pour les informations de fuseau horaire sous Windows. Vous n'avez pas besoin d'utiliser un système d'exploitation basé sur Unix car vous pouvez accéder aux informations de fuseau horaire du système directement à partir de tzinfo.

https://github.com/tzinfo/tzinfo-data

# Autres joyaux majeurs

bcrypt
 Le mot de passe peut être crypté.

https://github.com/codahale/bcrypt-ruby

devise
 Vous pouvez créer une fonction d'authentification utilisateur essentielle pour les applications Web. Vous pouvez également créer un formulaire d'inscription et mettre en œuvre l'authentification par e-mail, Facebook, etc.

https://github.com/heartcombo/devise

kaminari
 Vous pouvez facilement ajouter une fonction de pagination.

https://github.com/kaminari/kaminari

carrierwave

 Fonction de téléchargement d'image.

https://github.com/carrierwaveuploader/carrierwave

active admin
 Vous pouvez créer un écran de gestion CRUD.

https://github.com/activeadmin/activeadmin

ruboCop
 Un outil d'analyse de code statique qui vérifie s'il est écrit selon les normes de codage.

https://github.com/rubocop-hq/rubocop

pry-rails
 Vous pourrez utiliser des méthodes, etc. dans la console des rails comme irb de Ruby.

https://github.com/rweng/pry-rails

faker
 Générez de fausses données.

https://github.com/faker-ruby/faker

capistrano
 Outil de déploiement automatique.

https://github.com/capistrano/capistrano

# Résumé
 Les rails ont une longue histoire, il y a donc beaucoup de gemmes. Il semble difficile de sélectionner si vous êtes débutant. Tout d'abord, il semble nécessaire de sélectionner Gem en choisissant quel type de fonction est requis et combien avant le développement. Je vais mettre en place un site qui semble être une référence pour la sélection de Gem. Je mettrai à jour cet article de plus en plus s'il y a une gemme utile.
 [Outil de recherche de gemmes](https://www.ruby-toolbox.com/)
 [Site de classement des gemmes](https://bestgems.org/)

 [^ 1]: Un outil qui résout les dépendances des fichiers JavaScript qui sont divisés en modules et séparés en un seul fichier.
 [^ 2]: L'endroit où le programme commence à s'exécuter. ([Entry Point-wiki](https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA%E3%83%BC % E3% 83% 9D% E3% 82% A4% E3% 83% B3% E3% 83% 88 #: ~: texte =% E3% 82% A8% E3% 83% B3% E3% 83% 88% E3 % 83% AA% E3% 83% BC% E3% 83% 9D% E3% 82% A4% E3% 83% B3% E3% 83% 88% E3% 81% A8% E3% 81% AF% E3% 80 % 81% E3% 83% 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% A0,% E3% 81% 8C% E3% 83% A1% E3% 82% A4% E3% 83% B3% E3% 83% AB% E3% 83% BC% E3% 83% 81% E3% 83% B3% E3% 81% A7% E3% 81% 82% E3% 82% 8B% E3% 80% 82)))
 [^ 3]: pré-lire et mettre en cache les images et le contenu avant d'afficher le site. (Référence → [Qu'est-ce qu'un préchargeur](https://www.ikesai.com/words/%E3%83%97%E3%83%AA%E3%83%AD%E3%83%BC%E3%83] % 80% E3% 83% BC))
 [^ 4]: Principalement pour éviter les conflits tels que la communication, le côté hôte s'informe périodiquement sur chaque périphérique, et lorsque les conditions sont remplies, il envoie et reçoit et exécute divers processus. ([Polling-wiki](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0_ ( % E6% 83% 85% E5% A0% B1) #: ~: texte =% E3% 83% 9D% E3% 83% BC% E3% 83% AA% E3% 83% B3% E3% 82% B0% EF% BC% 88 polling% EF% BC% 89% E3% 81% A8% E3% 81% AF% E3% 80% 81,% E6% 96% B9% E5% BC% 8F% E3% 81% AE% E3 % 81% 93% E3% 81% A8% E3% 81% A7% E3% 81% 82% E3% 82% 8B% E3% 80% 82))


Recommended Posts

[Rails 6] À propos des principaux joyaux
À propos des rails 6
À propos du routage des rails
[Rails] À propos d'ActiveJob,!
À propos du contrôleur Rails
[Rails] À propos des fichiers de migration
[Rails] À propos du hachage actif
À propos de la spécification de version des rails
[rails] concevoir les valeurs par défaut
rails Paramètres forts
[Débutant] À propos de la session Rails
A propos de l'attribution d'un nom aux méthodes de modèle Rails
[Rails] À propos de la structure des dossiers scss
[Rails] À propos du test de réponse Rspec
À propos de la méthode de raclage des rails Mechanize
En savoir plus sur les gemmes et les bundlers
À propos du symbole <%%> dans Rails erb
[Rails] À propos de la mise en œuvre de la fonction similaire
[Rails] À propos de la méthode d'assistance form_with [Basic]
À propos =
Considération sur les rails et l'architecture propre
[Ruby on Rails] 1 modèle CRUD (routage principal)
[Rails 6.0] À propos de la sauvegarde par lots de plusieurs enregistrements
[Ruby on Rails] À propos du rappel Active Record
[Rails] À propos de local: true décrit dans form_with