Pourquoi je n'ai [absolument] pas exécuté la commande gem install rails pendant 10 ans dans Ruby

Le titre est la pêche.

Le sujet est trop gros et je suis un peu nerveux. Maintenant, parlons de ce que dit le titre.

Conclusion

Dilemme de construction d'environnement de développement

Il existe différentes manières de créer un environnement de développement.

Le manque de moyens uniformes est à la fois un mérite et un inconvénient. (Dans le sens de la liberté)

Cependant, le problème est: "Je ne suis pas sûr, mais c'est sur Qiita, et cela a fonctionné, donc je suis d'accord avec cette procédure."

Le logiciel publié sur OSS est publié de manière spécifique. Je voudrais me montrer comment en faire bon usage.

Exemple concret

Par exemple, il y a un article comme celui-ci

"(Ubuntu) Construction de l'environnement Ruby on rails 6.0"

Il est important de noter que ** cet article n'est pas mauvais, c'est juste que je ne suis pas ces étapes **.

Alors, comment faites-vous cela?

Lorsque je construis un projet Rails, j'effectue les étapes suivantes: Tout d'abord, je vais donner un aperçu et ensuite écrire des commandes spécifiques.

  1. Pré-installez les packages (bibliothèques, etc.) nécessaires pour construire Ruby
  2. Installez Ruby en utilisant rbenv
  3. Installez Node.js requis pour Rails 6 ou version ultérieure
  4. Créez un répertoire pour le projet avec un nom approprié (ʻexample_project`)
  5. Exécutez la commande bundle init dans le répertoire du projet pour créer un fichier Gemfile.
  6. Modifiez le fichier Gemfile créé et activez (commentez) les lignes qui sont gem'rails'
  7. Exécutez bundle install --path = vendor / bundle pour installer le gem sous un chemin spécifique
  8. Lancez avec la commande rails s

Maintenant, écrivons une commande concrète. L'environnement suppose Ubuntu Linux.

Commencez sans Ruby. C'est presque la même chose que "(Ubuntu) Ruby on rails 6.0 construction de l'environnement", mais l'ordre est différent.

Préparation

#Mettre à jour les informations du package apt
sudo apt update -y
#Mettre à jour le logiciel installé sur Ubuntu
sudo apt upgrade -y
#Installez les packages nécessaires pour construire Ruby via apt
sudo apt install build-essential -y
sudo apt install -y libssl-dev libreadline-dev zlib1g-dev

#Lors de l'utilisation de sqlite3, installez la bibliothèque associée à sqlite3
sudo apt install libsqlite3-dev

#Pour PostgreSQL, exécutez la commande suivante
sudo apt-get install postgresql-common
sudo apt-get install libpq-dev

#Pour MySQL ou MariaDB, exécutez la commande suivante
sudo apt-get install libmysqlclient-dev

Installez Ruby

#Installer rbenv (outil de gestion de paquets)
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
#Définir le chemin dans la variable d'environnement
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
#Redémarrez le shell
exec $SHELL -l

# ruby-installer build
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

#Installez Ruby
rbenv install 2.6.2
rbenv global 2.6.2

#Installez la commande bundler en tant que gemme
# Ruby 2.Depuis 6, bundler est inclus, la procédure suivante est inutile. 2.Requis avant 5
gem install bundler

À ce stade, Ubuntu Linux a les commandes ruby, gem et bundler installées.

Le développement avec Ruby on Rails est encore long.

Cependant, dans cet état, nous sommes prêts à commencer à écrire des programmes Ruby.

** La procédure est différente d'ici **

Ensuite, installez Node.js, qui est requis pour Rails 6 et supérieur.

# node.js,Installer npm
sudo apt install -y nodejs npm
#n package installé
sudo npm install n -g
#Installer le nœud à l'aide du package n
sudo n stable
#L'ancien nœud que vous avez mis en premier.js,Supprimer npm
sudo apt purge -y nodejs npm
#Se reconnecter
exec $SHELL -l
#Installer le paquet de fils
sudo npm install yarn -g
# node.Vérifiez si la version js est la dernière
node -v

En suivant cette procédure, vous avez installé les commandes ruby (2.6.2) et gem, node et yarn sur Ubuntu Linux.

Prenons une pause ici.

Une fois ces préparatifs en place, vous êtes prêt à exécuter Rails 6.

Ensuite, créez un répertoire pour le projet que vous souhaitez créer et configurez Rails.

#Créez un répertoire pour le projet que vous créez
mkdir example_project
#Déplacer vers le répertoire créé
cd example_project

#Exécutez le bundle init pour créer un fichier Gemfile
bundle init

#Modifiez le Gemfile créé et sélectionnez "# gem 'rails'Commentaire dans la partie
# 「# gem "rails"Où il est dit "#(tranchant)Effacer "gemme"'rails'Sous la forme de
gedit Gemfile

#bundle installer pour installer des rails
bundle install --path vendor/bundle

#Exécutez la nouvelle commande rails pour installer les gemmes de rails en vrac
bundle exec rails new .
(À ce stade, un message en anglais comme "Voulez-vous écraser?" S'affiche, alors entrez "Y".)

En suivant ces étapes, vous pourrez utiliser Rails.

bundle exec rails s

** Ajouté le 18/07/2020 **

Veuillez le signaler dans les commentaires et mentionner --path vendor / bundle lors de l'installation du bundle À partir de Bundler 2.1, l'option --path est obsolète (obsolète). Veuillez vous référer à la description ici pour savoir comment traiter ce point.

Que faire si l'avertissement «[DEPRECATED] The --path flag is deprecated» se produit pendant l'installation du bundle

Commentaire

Je vais expliquer dans quel état il se trouvait, le cas échéant

Tout d'abord, l'état dans lequel la bibliothèque qui est "préparation" est insérée est indiqué sous forme de figure.

スクリーンショット 2020-07-17 22.48.57.png

Ce sont les bibliothèques installées sous Linux. Cela seul ne vous permettra pas d'exécuter des commandes Ruby (bien que cela soit naturel car Ruby n'est pas installé)

Dans l'état "Install Ruby", il sera dans l'état suivant

スクリーンショット 2020-07-17 23.01.28.png

Les commandes ruby et gem sont installées sur la base de la bibliothèque «Packages installés sur Ubuntu Linux». La raison de la commande bundler est que vous installez la commande bundle avec la commande gem install bundler.

Ce qui suit montre l'état dans lequel "Node.js" est installé.

スクリーンショット 2020-07-17 23.24.08.png

La ligne en pointillé est parce qu'elle a été supprimée avec la commande sudo apt purge -y nodejs npm.

Dans cet état, les commandes «ruby», «gem», «bundler», «node», «npm» et «yarn» peuvent être exécutées.

Ce qu'il faut savoir, c'est qu'en ce qui concerne Ruby, seules les commandes ruby, gem et bundler peuvent être exécutées, et en JavaScript, les commandes node, npm et yarn peuvent être exécutées. seulement.

Ensuite, l'état "Créer le répertoire du projet que vous souhaitez créer et configurer Rails" s'affiche.

スクリーンショット 2020-07-17 23.36.13.png

Oui, vous avez maintenant les ** bibliothèques requises pour votre projet ** installées dans le fournisseur / bundle.

Je pense qu'il est difficile de comprendre la comparaison avec cela seul, donc je vais montrer le cas où gem install rails est exécuté.

スクリーンショット 2020-07-17 23.39.03.png

Il est représenté en rouge parce que je veux le souligner.

Ce que je veux dire ici, c'est que la gemme de rails qui exécute la commande ** rails et la version de" les gemmes liées aux rails sont stockées dans le répertoire vendeur / bundle "peuvent être différentes. Il y a ** </ font>.

Cette situation ne peut pas être complètement reproduite si la version du gem installé sur ruby ne correspond pas à la version du gem installé sous vendor / bundle (devrait). Cela signifie qu'il est possible de créer une situation où une telle chose n'existe pas.

En revanche, la méthode décrite ci-dessus (la méthode qui n'utilise pas les gem install rails) ne dépend pas des" programmes installés sous le répertoire HOME d'Ubuntu Linux ".

Par conséquent, il est confortable d'utiliser efficacement la commande bundler, d'installer les bibliothèques requises pour le programme dans un répertoire spécifique et de dire" Gardez l'environnement gem standard Ruby aussi simple que possible ". Je pense que tu peux vivre une vie de Ruby.

(Cependant, cette histoire s'applique probablement aux écosystèmes dotés d'un système de gestion de paquets, tel que Python.)

Par conséquent, je pense qu'il est important de bien ** comprendre le rôle de chaque commande et à quoi elle convient, et de l'exécuter **.

Veuillez me pardonner l'écriture aléatoire parce que j'écris avec élan.

Serpentin

  • Pourquoi dois-je installer Node.js pour créer un environnement Ruby on Rails! L'histoire
  • À partir de Rails 6, Webpacker est devenu le standard
  • webpacker est nécessaire pour utiliser du fil, qui est un écosystème de node.js
  • Il est subtil que ce ne soit pas complet dans une langue, mais à long terme, cela me rend heureux d'entrer dans l'écosystème Node.js plutôt que d'avoir à me soucier de JS. Je l'interprète personnellement comme.

Recommended Posts

Pourquoi je n'ai [absolument] pas exécuté la commande gem install rails pendant 10 ans dans Ruby
Je ne vois pas d'erreur dans l'installation du bundle Rails ... la solution
Je ne peux pas grouper l'installation après avoir changé la version de Ruby
Emplacement de la définition de la méthode Résumé de la vérification Lorsque défini dans le projet et Rails / Gem
[Webpacker] Résumé de l'installation de Bootstrap et jQuery dans Rails 6.0
[Ruby on Rails] Changez la destination de sauvegarde du recueil de gemmes * Remarque
Effacer N + 1 dans les actes_as_tree de l'arborescence Ruby on Rails Gem
J'ai résumé le flux jusqu'à l'implémentation de simple_calendar dans Ruby on Rails.
Points à retenir et concepts dans le didacticiel Ruby on Rails
Je veux changer la valeur de l'attribut dans Selenium of Ruby
[Ruby on Rails] Comment se connecter avec seulement votre nom et mot de passe en utilisant le bijou
Exécutez la commande de serveur rails sur windows10, Ruby2.6.6 et obtenez "impossible de charger un tel fichier --sqlite3 / sqlite3_native"
[Rails] Différence de comportement entre delegate et has_many-through dans le cas de one-to-one-to-many
[Ruby] Je souhaite extraire uniquement la valeur du hachage et uniquement la clé
[Introduction à Ruby] À propos du rôle de true et break in the while statement
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
Ruby on Rails Lorsque vous ne connaissez pas la cause de la restauration lors de l'enregistrement.