Ruby on Rails - Von der Umgebungskonstruktion bis zur einfachen Anwendungsentwicklung auf WSL2

Einführung

Ich werde Ruby on Rails zum ersten Mal seit langer Zeit berühren. Ich werde auf die neueste Version eingehen, daher möchte ich allen helfen, indem ich dieses Memo hinterlasse.

Umgebung

Ubuntu20.04 (on Windows10 WSL2)

Ruby-Installation

$ sudo apt-get install ruby
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
Suggested packages:
  apache2 | lighttpd | httpd ri ruby-dev bundler
$ sudo gem update --system
$ sudo gem install bundler
$ sudo apt-get install build-essential liblzma-dev patch ruby-dev zlib1g-dev libsqlite3-dev nodejs sqlite3
$ sudo gem install rails

--Überprüfen Sie, ob Schienen installiert sind. Es scheint, dass 6.0.3.1 installiert wurde.

$ rails -v
Rails 6.0.3.1

Projekterstellung

Erstellen Sie ein Hello World-Projekt

$ rails new helloworld

neue Option

neue Option -d

-d dbms angegeben

SQL Lite3, MySQL, Oracle, PostgreSQL, FrontBase, DB / 2 können als DBMS-Spezifikation angegeben werden. Der Standardwert ist SQL Lite3.

DBMS Optionswert
SQLLite3 sqlite3
MySQL mysql
Oracle oracle
PostgreSQL postgresql
FrontBase frontbase
DB/2 ibm_db
$ rails new hoge_app -d mysql

neue Option -f

$ rails new hoge_app -f

neue Option -r

--ruby Wird verwendet, um den Binärpfad anzugeben. Ist es eine Option zu verwenden, wenn mehrere Versionen von Ruby installiert sind ...

$ rails new hoge_app -r  /usr/bin/ruby2.7

neue Option -G

--Diese Option enthält nicht .gitignore.

$ rails new hoge_app -G

New-B-Option

--Diese Option wird nicht installiert.

$ rails new hoge_app -B

neue Option -J

--Diese Option enthält kein Javascript.

$ rails new hoge_app -J

neue -T-Option

--Diese Option enthält nicht test :: unit.

$ rails new hoge_app -T

Starten Sie den Webserver

Wechseln Sie zu dem von Ihnen erstellten helloworld-Projektordner und führen Sie den Serverstartbefehl aus.

$ cd helloworld/
$ rails s
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.
=> Booting Puma
=> Rails 6.0.3.1 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.5 (ruby 2.7.0-p0), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
* Listening on tcp://[::1]:3000
Use Ctrl-C to stop

――Hier möchte ich sagen: „Bitte stellen Sie mit einem Browser eine Verbindung zu localhost her und überprüfen Sie dies.“ Da meine Umgebung jedoch auf WSL2 basiert, habe ich eine Möglichkeit entwickelt, vom Host aus auf localhost von WSL2 zuzugreifen. Wird benötigt.

localhostForwarding=True

--Bitte greifen Sie auf `http: // localhost: 3000 `zu.

image.png

Ich werde eine Korrektur vornehmen

――Es ist traurig, dass es keinen Wortlaut von Hello World gibt, obwohl es als Hello World-Projekt bezeichnet wird, also werde ich es ändern.

$ pwd
/home/user1/dev/ror/helloworld
$ rails g controller hello index

image.png

rb:index.html.erb


<h1>Hello#index</h1>
<p>Find me in app/views/hello/index.html.erb</p>
<p>Hello World</p>

image.png

Gerüst implementieren

»Hallo Welt allein ist langweilig, deshalb werde ich auch das Gerüst erwähnen.

Schienen g Gerüstmodellname Spaltenname:Schimmel...

--Beispielmodellname: todo

Spaltenname Schimmel
user_id string
content string
$ rails g scaffold Todo user_id:string content:string

image.png

--Nächste erstellen Sie eine Tabelle. ――Bitte rezitieren Sie die Magie unten.

$ rake db:migrate
== 20200614122106 CreateTodos: migrating ======================================
-- create_table(:todos)
   -> 0.0079s
== 20200614122106 CreateTodos: migrated (0.0102s) =============================
rails dbconsole
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .tables
sqlite> .tables
ar_internal_metadata  schema_migrations     todos

»Lass uns vorerst die todos-Tabelle durchsuchen.

sqlite> select * from todos;
sqlite>

image.png

image.png

image.png

select * from todos;
1|sample1|Entwicklungstreffen ab 10 Uhr|2020-06-14 12:39:29.896376|2020-06-14 12:39:29.896376
sqlite> 

Migrationsgenerator

$ rails g migration AddColumnTodos
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.
Running via Spring preloader in process 764
      invoke  active_record
      create    db/migrate/20200614130727_add_column_todos.rb

20200614130727_add_column_todos.rb


class AddColumnTodos < ActiveRecord::Migration[6.0]
  def change
  end
end

――Das Beispiel wird unten beschrieben.

20200614130727_add_column_todos.rb


class AddColumnTodos < ActiveRecord::Migration[6.0]
  def up
    add_column :todos, :location, :string
  end

  def down
    remove_column :todos, :location, :string
  end
end
rails db:migrate:status
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.

database: db/development.sqlite3

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200614122106  Create todos
  down    20200614130727  Add column todos

――So führen Sie die Migration aus. Führen Sie den Befehl aus, der zuvor als Magie beschrieben wurde.

$ rake db:migrate
== 20200614130727 AddColumnTodos: migrating ===================================
-- add_column(:todos, :location, :string)
   -> 0.0049s
== 20200614130727 AddColumnTodos: migrated (0.0052s) ==========================
$ rails db:migrate:status
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.

database: db/development.sqlite3

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200614122106  Create todos
   up     20200614130727  Add column todos

--Alle Status ist aktiv. Es scheint, dass es aufgenommen wurde. Werfen wir einen Blick auf die DB-Tabellendefinition.

sqlite> .schema todos
CREATE TABLE IF NOT EXISTS "todos" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" varchar, "content" varchar, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL, "location" varchar);
$ rails db:rollback
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.
== 20200614130727 AddColumnTodos: reverting ===================================
-- remove_column(:todos, :location, :string)
   -> 0.0547s
== 20200614130727 AddColumnTodos: reverted (0.0553s) ==========================
$ rails db:migrate:status
Warning: the running version of Bundler (2.1.2) is older than the version that created the lockfile (2.1.4). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.1.4`.

database: db/development.sqlite3

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20200614122106  Create todos
  down    20200614130727  Add column todos
.schema todos
CREATE TABLE IF NOT EXISTS "todos" ("id" integer NOT NULL PRIMARY KEY, "user_id" varchar DEFAULT NULL, "content" varchar DEFAULT NULL, "created_at" datetime(6) NOT NULL, "updated_at" datetime(6) NOT NULL);

――Durch gute Nutzung der Migration ist es bequem, Code und Datenbank reibungslos zu verknüpfen.

Schließlich

Blinddarm

Empfohlene IDE bei Verwendung der WSL-Umgebung

So öffnen Sie ein Projekt in WSL über Visual Studio Code

  1. Installieren Sie Remote --WSL als Erweiterung von Visual Studio Code. image.png

  2. Klicken Sie unten links auf das Symbol für die Remoteverbindung. image.png

  3. Wählen Sie eine beliebige Option [Remote-WSL ...] aus der Palette. Wählen Sie hier [Remote-WSL: Neues Fenster] image.png

  4. Sie können sehen, dass sich das Remoteverbindungssymbol unten links geändert hat. Die Notation wurde in [WSL: Ubuntu-20.04] geändert. Wählen Sie [Ordner öffnen ...], um den RoR-Projektordner zu öffnen. image.png

  5. Wie unten gezeigt, können Sie das Terminal bedienen, indem Sie die Explorer-Funktion in der Baumstruktur links und die Dateibearbeitungsfunktion im oberen rechten Fenster öffnen und das Terminal mit "Strg + @" öffnen. Sie können die meisten Vorgänge für den visuellen Quellcode ausführen. So ist es bequem. image.png

Fehlerbehebung

Wenn beim Installieren von Schienen der folgende Fehler auftritt

E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/l/linux/linux-libc-dev_5.4.0-33.37_amd64.deb  404  Not Found [IP: 91.189.88.152 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

Wenn beim Installieren von Rails ein C-Compilerfehler auftritt

ERROR:  Error installing rails:
        ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.7.0/gems/nokogiri-1.10.9/ext/nokogiri
/usr/bin/ruby2.7 -I /usr/lib/ruby/2.7.0 -r ./siteconf20200614-4621-1erqs4m.rb extconf.rb
checking if the C compiler accepts ... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
$ sudo gem update --system
$ sudo gem install bundler
$ sudo apt-get install build-essential liblzma-dev patch ruby-dev zlib1g-dev libsqlite3-dev nodejs

Die Seite, die ich als Referenz verwendet habe

Rails-Dokument Rails Lehrbuch

Recommended Posts

Ruby on Rails - Von der Umgebungskonstruktion bis zur einfachen Anwendungsentwicklung auf WSL2
Bereitstellen auf Ruby on Rails Elastische Bohnenstange (Umgebungskonstruktion)
[Ruby on Rails] Von der MySQL-Konstruktion zum Datenbankwechsel
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
[Verfahren 1 für Anfänger] Ruby on Rails: Aufbau einer Entwicklungsumgebung
[Docker] Entwicklung der Entwicklungsumgebung Rails6 / Ruby2.7 / MySQL8
Muskel Rubin auf Schienen Tag 1 ~ Umweltbau ~
Erstellen einer Entwicklungsumgebung für Ruby on Rails mit Docker + VSCode (Remote Container)
Schritte zum Erstellen einer Ruby on Rails-Entwicklungsumgebung mit Vagrant
So verknüpfen Sie Rails6 Vue (aus dem Umgebungsbau)
[Persönliches Memo] Ruby on Rails-Umgebungskonstruktion (Windows)
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 6.x)
[Fehler] Wechseln Sie die Umgebungskonstruktion, um oss (Open Source) von Ruby on Rails zu verwenden
So lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
So erstellen Sie eine Ruby on Rails-Entwicklungsumgebung mit Docker (Rails 5.x)
Aufbau der Rails6-Entwicklungsumgebung [Mac]
[Einführung] Erstellen Sie eine Ruby on Rails-Anwendung
Rails Engineer Environment Construction Ruby2.7.1
Erstellen Sie eine Ruby on Rails-Entwicklungsumgebung in AWS Cloud9
Schienen Umgebungsbau Schienen5.2.1 ruby2.5.1 Catalina
[Von Zeit zu Zeit aktualisiert] Ruby on Rails Praktische Methode
[Umgebungskonstruktion Mac] Ruby on Rails (+ Webpacker behandelt Fehler)
JavaFX-Anwendungsentwicklung mit IntelliJ IDEA und Gradle ~ Von der Umgebungskonstruktion bis zum Beispielcode ~
Erstellen Sie eine Entwicklungsumgebung für Rails-Anwendungen mit Docker [Docker, Rails, Puma, Nginx, MySQL]
Umgebungskonstruktion für die Entwicklung von Servlet-Anwendungen
Verwendung von Ruby on Rails
Konstruktionsverfahren für Rails on Docker-Umgebungen
Erstellen Sie eine Entwicklungsumgebung, in der die Haltepunkte von Ruby on Rails unter Windows funktionieren
Hinweise zum Erstellen der Kotlin-Entwicklungsumgebung und zur Migration von Java nach Kotlin
Erstellen einer PostgreSQL-Umgebung mit Docker (vom Setup bis kurz vor der Entwicklung)
So erstellen Sie eine App mit Ruby on Rails (vorausgesetzt, die Umgebung wurde erstellt)
Konstruktionsnotiz für die Java-Entwicklungsumgebung auf dem Mac
Bereitstellen für Heroku [Ruby on Rails] Anfänger
[Ruby] Erstellen einer Ruby-Entwicklungsumgebung unter Ubuntu
Vorbereiten der Einführung von jQuery in Ruby on Rails
Ruby on Rails-Anwendung neuer Erstellungsbefehl
[Ruby on Rails] Verwendung von redirect_to
[Ruby on Rails] Schaltfläche, um nach oben zurückzukehren
CentOS8.2 (x86_64) + ruby2.5 + Rails5.2 + MariaDB (10.3.17) Umgebungskonstruktion
Wechseln Sie in einem neuen Ruby on Rails-Projekt von SQLite3 zu PostgreSQL
Versuchen Sie, ScalarDB unter WSL Ubuntu (Environment Construction) auszuführen.
[Jakarta EE 8 Anwendungsentwicklung mit Gradle] 1. Umgebungskonstruktion
Versuchen Sie, die Rails-App für EC2-Part 2 (Server Construction) bereitzustellen.