Warum ich den Befehl gem install Rails 10 Jahre lang in Ruby [absolut] nicht ausführe

Der Titel ist Angeln.

Das Thema ist zu groß und ich bin etwas nervös. Lassen Sie uns nun darüber sprechen, was der Titel sagt.

Fazit

Konstruktionsdilemma der Entwicklungsumgebung

Es gibt verschiedene Möglichkeiten, eine Entwicklungsumgebung zu erstellen.

Das Fehlen einheitlicher Mittel ist sowohl ein Verdienst als auch ein Fehler. (Im Sinne der Freiheit)

Das Problem ist jedoch: "Ich bin nicht sicher, aber es ist auf Qiita und es hat funktioniert, also bin ich mit diesem Verfahren einverstanden."

Die auf OSS veröffentlichte Software wird zweckspezifisch veröffentlicht. Ich möchte mir zeigen, wie ich es gut nutzen kann.

Konkretes Beispiel

Zum Beispiel gibt es einen Artikel wie diesen

"(Ubuntu) Ruby on Rails 6.0-Umgebungskonstruktion"

Es ist wichtig zu beachten, dass ** dieser Artikel nicht schlecht ist, sondern nur, dass ich diese Schritte nicht befolge **.

Wie machst du das?

Wenn ich ein Rails-Projekt erstelle, gehe ich folgendermaßen vor: Zuerst werde ich einen Überblick geben und dann bestimmte Befehle schreiben.

  1. Installieren Sie die Pakete (Bibliotheken usw.) vor, die zum Erstellen von Ruby erforderlich sind
  2. Installieren Sie Ruby mit rbenv
  3. Installieren Sie Node.js, das für Rails 6 oder höher erforderlich ist
  4. Erstellen Sie ein Verzeichnis für das Projekt mit einem geeigneten Namen (example_project).
  5. Führen Sie den Befehl "bundle init" im Projektverzeichnis aus, um eine "Gemfile" -Datei zu erstellen.
  6. Bearbeiten Sie die erstellte "Gemfile" -Datei und aktivieren (kommentieren) Sie die Zeilen, die "gem'rails" sind
  7. Führen Sie bundle install --path = vendor / bundle aus, um das Gem unter einem bestimmten Pfad zu installieren
  8. Starten Sie mit dem Befehl Rails s

Schreiben wir nun einen konkreten Befehl. Die Umgebung setzt Ubuntu Linux voraus.

Beginnen Sie ohne Ruby. Es ist fast dasselbe wie "(Ubuntu) Ruby on Rails 6.0-Umgebungskonstruktion", aber die Reihenfolge ist unterschiedlich.

Vorbereitung

#Aktualisieren Sie die passenden Paketinformationen
sudo apt update -y
#Aktualisieren Sie die unter Ubuntu installierte Software
sudo apt upgrade -y
#Installieren Sie die Pakete, die zum Erstellen von Ruby über apt erforderlich sind
sudo apt install build-essential -y
sudo apt install -y libssl-dev libreadline-dev zlib1g-dev

#Installieren Sie bei Verwendung von sqlite3 die Bibliothek für sqlite3
sudo apt install libsqlite3-dev

#Führen Sie für PostgreSQL den folgenden Befehl aus
sudo apt-get install postgresql-common
sudo apt-get install libpq-dev

#Führen Sie für MySQL oder MariaDB den folgenden Befehl aus
sudo apt-get install libmysqlclient-dev

Installieren Sie Ruby

#Installieren Sie rbenv (Paketverwaltungstool)
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
#Pfad in Umgebungsvariable festlegen
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
#Starten Sie die Shell neu
exec $SHELL -l

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

#Installieren Sie Ruby
rbenv install 2.6.2
rbenv global 2.6.2

#Installieren Sie den Bundler-Befehl als Juwel
# Ruby 2.Da der Bundler 6 enthalten ist, ist das folgende Verfahren nicht erforderlich. 2.Erforderlich vor 5
gem install bundler

Zu diesem Zeitpunkt sind in Ubuntu Linux die Befehle "ruby", "gem" und "bundler" installiert.

Es ist noch ein langer Weg, um mit Ruby on Rails zu entwickeln.

In diesem Zustand können wir jedoch mit dem Schreiben von Ruby-Programmen beginnen.

** Das Verfahren unterscheidet sich von hier **

Installieren Sie dann Node.js, das für Rails 6 und höher erforderlich ist.

# node.js,Installieren Sie npm
sudo apt install -y nodejs npm
#n Paket installiert
sudo npm install n -g
#Installieren Sie den Knoten mit dem Paket n
sudo n stable
#Der alte Knoten, den Sie zuerst eingegeben haben.js,Npm entfernen
sudo apt purge -y nodejs npm
#Erneut anmelden
exec $SHELL -l
#Garnpaket einlegen
sudo npm install yarn -g
# node.Überprüfen Sie, ob die js-Version die neueste ist
node -v

Mit diesem Verfahren haben Sie die Befehle ruby (2.6.2) und gem, node und yarn unter Ubuntu Linux installiert.

Machen wir hier eine Pause.

Mit diesen Vorbereitungen können Sie Rails 6 ausführen.

Erstellen Sie als Nächstes ein Verzeichnis für das Projekt, das Sie erstellen möchten, und richten Sie Rails ein.

#Erstellen Sie ein Verzeichnis für das von Ihnen erstellte Projekt
mkdir example_project
#Wechseln Sie in das erstellte Verzeichnis
cd example_project

#Führen Sie bundle init aus, um eine Gemfile-Datei zu erstellen
bundle init

#Bearbeiten Sie die erstellte Gemfile und wählen Sie "# gem 'rails'Kommentar im Teil
# 「# gem "rails"Wo steht "#(Scharf)"Edelstein" löschen'rails'In Form von
gedit Gemfile

#Bundle installieren, um Schienen zu installieren
bundle install --path vendor/bundle

#Führen Sie den Befehl Rails New aus, um die Rails-Edelsteine in großen Mengen zu installieren
bundle exec rails new .
(Zu diesem Zeitpunkt wird eine englische Nachricht wie "Möchten Sie überschreiben?" Angezeigt. Geben Sie daher "Y" ein.)

Wenn Sie diese Schritte ausführen, können Sie Rails verwenden.

bundle exec rails s

** Hinzugefügt am 18.07.2020 **

Bitte weisen Sie in den Kommentaren darauf hin und erwähnen Sie bei der Bundle-Installation "--path vendor / bundle". Ab Bundler 2.1 ist die Option "--path" veraltet (veraltet). In der Beschreibung hier finden Sie Informationen zum Umgang mit diesem Punkt.

Was tun, wenn während der Bundle-Installation die Warnung "[DEPRECATED] Das Flag --path ist veraltet" auftritt?

Kommentar

Ich werde erklären, was für eine Situation es war

Zunächst wird der Zustand, in dem die Bibliothek "Vorbereitung" eingefügt wird, als Abbildung angezeigt.

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

Dies sind die unter Linux installierten Bibliotheken. Dies allein ermöglicht es Ihnen nicht, Ruby-Befehle auszuführen (obwohl dies natürlich ist, da Ruby nicht installiert ist).

Im Status "Ruby installieren" befindet es sich im folgenden Status

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

Die Befehle ruby und gem werden basierend auf der Bibliothek "Unter Ubuntu Linux installierte Pakete" installiert. Der Grund für den Befehl bundler ist, dass Sie den Befehl "bundle" mit dem Befehl "gem install bundler" installieren.

Das Folgende zeigt den Status, in dem "Node.js" installiert ist.

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

Die gepunktete Linie ist, weil sie mit dem Befehl sudo apt purge -y nodejs npm gelöscht wurde.

In diesem Zustand können die Befehle "ruby", "gem", "bundler", "node", "npm" und "yarn" ausgeführt werden.

Beachten Sie, dass bei Ruby nur die Befehle "ruby", "gem" und "bundler" ausgeführt werden können und in JavaScript die Befehle "node", "npm" und "yarn" ausgeführt werden können. nur.

Als Nächstes wird der Status "Verzeichnis des Projekts erstellen, das Sie erstellen und Rails einrichten möchten" angezeigt.

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

Ja, Sie haben jetzt die für Ihr Projekt erforderlichen ** Bibliotheken ** in Vendor / Bundle installiert.

Ich denke, es ist schwer, den Vergleich allein zu verstehen, deshalb werde ich den Fall zeigen, in dem "Gem Install Rails" ausgeführt wird.

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

Es wird rot angezeigt, weil ich es hervorheben möchte.

Was ich hier sagen möchte, ist, dass der Edelstein der Schienen, der den Befehl ** `Schienen" ausführt, und die Version von "Edelsteine, die sich auf Schienen beziehen, im Verzeichnis des Anbieters / Bündels gespeichert sind" unterschiedlich sein können. Es gibt ** </ font>.

Ein solcher Zustand kann nicht vollständig reproduziert werden, wenn die auf Ruby installierte Version des Edelsteins nicht mit der unter "Anbieter / Bundle" installierten Version des Edelsteins übereinstimmt (sollte gleich sein). Es bedeutet, dass es möglich ist, eine Situation zu schaffen, in der es so etwas nicht gibt.

Andererseits hängt die oben beschriebene Methode (die Methode, die keine "gem install Rails" verwendet) nicht von "Programmen ab, die im HOME-Verzeichnis von Ubuntu Linux installiert sind".

Daher ist es bequem, den Befehl "bundler" effektiv zu verwenden, um die für das Programm erforderlichen Bibliotheken in einem bestimmten Verzeichnis zu installieren und "die Ruby-Standard-Gem-Umgebung so einfach wie möglich zu halten". Ich denke, du kannst ein Leben mit Ruby führen.

(Diese Geschichte gilt jedoch wahrscheinlich für Ökosysteme mit einem Paketverwaltungssystem wie Python.)

Daher denke ich, dass es wichtig ist, die Rolle jedes Befehls und dessen Zweck richtig zu verstehen und auszuführen **.

Bitte verzeihen Sie mir das zufällige Schreiben, weil ich mit Schwung schreibe.

Serpentin

  • Warum muss ich Node.js installieren, um eine Ruby on Rails-Umgebung zu erstellen? Die Geschichte
  • Ab Rails 6 ist Webpacker zum Standard geworden
  • Webpacker ist erforderlich, um Garn zu verwenden, das ein Ökosystem von node.js ist
  • Es ist subtil, dass es nicht in einer Sprache vollständig ist, aber auf lange Sicht macht es mich glücklich, in das Node.js-Ökosystem einzusteigen, anstatt mir Sorgen um JS machen zu müssen. Ich persönlich interpretiere es als.

Recommended Posts

Warum ich den Befehl gem install Rails 10 Jahre lang in Ruby [absolut] nicht ausführe
Ich sehe keinen Fehler bei der Installation des Rails-Bundles ... der Lösung
Ich kann die Installation nach dem Ändern der Ruby-Version nicht bündeln
Speicherort der Methodendefinition Zusammenfassung der zu überprüfenden Informationen Wenn im Projekt und in Rails / Gem definiert
[Webpacker] Zusammenfassung der Installation von Bootstrap und jQuery in Rails 6.0
[Ruby on Rails] Ändere das Speicherziel von Gem Refile * Hinweis
Lösche N + 1 in Acts_as_tree von Ruby on Rails Baumstruktur Gem
Ich habe den Ablauf bis zur Implementierung von simple_calendar in Ruby on Rails zusammengefasst.
Dinge, an die Sie sich erinnern sollten, und Konzepte im Ruby on Rails-Tutorial
Ich möchte den Wert von Attribute in Selenium of Ruby ändern
[Ruby on Rails] So melden Sie sich nur mit Ihrem Namen und Passwort mit dem Gem-Gerät an
Führen Sie den Befehl Rails Server unter Windows 10, Ruby2.6.6 aus und erhalten Sie "Kann eine solche Datei nicht laden --sqlite3 / sqlite3_native".
[Rails] Unterschied im Verhalten zwischen Delegat und has_many-through bei Eins-zu-Eins-zu-Viele
[Ruby] Ich möchte nur den Wert des Hash und nur den Schlüssel extrahieren
[Einführung in Ruby] Über die Rolle von true und break in der while-Anweisung
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
Ruby on Rails Wenn Sie die Ursache für das Zurücksetzen beim Speichern nicht kennen.