Ruby on Rails - De la construction d'environnement au développement d'application simple sur WSL2

introduction

Je toucherai Ruby on Rails pour la première fois depuis longtemps. Je vais aborder la dernière version, donc je voudrais aider tout le monde en laissant ce mémo.

environnement

Ubuntu20.04 (on Windows10 WSL2)

Installation de rubis

$ sudo apt-get install ruby
$ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]

--Il a été installé, mais le message qui m'intéressait était sorti.

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
$ rails -v
Rails 6.0.3.1

Création de projet

Créer un projet Hello World

$ rails new helloworld

nouvelle option

--Je n'ai spécifié aucune option cette fois, mais vous pouvez spécifier les options suivantes.

nouvelle option -d

-d dbms spécifié

SQL Lite3, MySQL, Oracle, PostgreSQL, FrontBase, DB / 2 peuvent être spécifiés comme spécification du SGBD. La valeur par défaut est SQL Lite3.

DBMS Valeur d'option
SQLLite3 sqlite3
MySQL mysql
Oracle oracle
PostgreSQL postgresql
FrontBase frontbase
DB/2 ibm_db

--Si vous spécifiez mysql, ce sera comme suit.

$ rails new hoge_app -d mysql

nouvelle option -f

$ rails new hoge_app -f

nouvelle option -r

--ruby Utilisé pour spécifier le chemin binaire. Est-ce une option à utiliser lorsque plusieurs versions de ruby sont installées ...

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

nouvelle option -G

$ rails new hoge_app -G

option new-B

$ rails new hoge_app -B

nouvelle option -J

$ rails new hoge_app -J

nouvelle option -T

--Cette option n'inclut pas test :: unit.

$ rails new hoge_app -T

Démarrez le serveur Web

Accédez au dossier de projet helloworld que vous avez créé et exécutez la commande de démarrage du serveur.

$ 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

«Ici, je voudrais dire:« Veuillez vous connecter à localhost avec un navigateur et vérifier. »Cependant, comme mon environnement a été construit sur WSL2, j'ai conçu un moyen d'accéder à l'hôte local de WSL2 depuis l'hôte. Est requis. --Préparez un fichier appelé % userprofile% \ .wslconfig . Ce qui suit est décrit dans le fichier.

localhostForwarding=True

image.png

Je vais faire une correction

«C'est triste qu'il n'y ait pas de libellé de Hello World même s'il s'appelle un projet Hello World, donc je vais le modifier.

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

image.png

--Corrigez le libellé de la classe de vue comme suit.

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

Mettre en œuvre un échafaudage

――Hello World seul est terne, donc je mentionnerai également l'échafaudage. --Le générateur d'échafaudage est une fonction qui crée une opération CRUD pour le modèle défini et la reflète dans la base de données. --Ce qui suit est comment écrire

rails g nom du modèle d'échafaudage nom de la colonne:Moule...
Nom de colonne Moule
user_id string
content string
$ rails g scaffold Todo user_id:string content:string

image.png

$ 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

--Il a été confirmé que la table todos a été créée.

―― Pour le moment, recherchons la table todos.

sqlite> select * from todos;
sqlite>

image.png

image.png

--En conséquence, il est affiché.

image.png

select * from todos;
1|sample1|Réunion de développement à partir de 10 heures|2020-06-14 12:39:29.896376|2020-06-14 12:39:29.896376
sqlite> 

générateur de migration

$ 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

--Dans la description du fichier de migration, vous pouvez décrire les changements dans def change`` ``, mais le processus ne fonctionnera pas lors de la réduction de la version de migration, donc `` `` def up '' Je pense qu'il est recommandé de décrire les changements et le contenu pour annuler les changements dans, def down```.

――L'exemple est décrit ci-dessous. --Dans def up '', vous déclarez que vous voulez ajouter une colonne en faisant add_column. --Le type est défini comme une chaîne dans la colonne d'emplacement en tant qu'informations de la colonne à ajouter. --Dans def down '', il est déclaré que la colonne sera supprimée en effectuant remove_column. --Le type est défini sous forme de chaîne dans la colonne d'emplacement en tant qu'informations de la colonne à supprimer.

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

――Ainsi, vous exécuterez la migration. Exécutez la commande précédemment décrite comme magique.

$ 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

--Tous les statuts sont en place. Il semble que cela ait été pris. Jetons un coup d'œil à la définition de la table DB.

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);

--Il semble que la colonne d'emplacement a été ajoutée correctement.

$ 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

--L'état de ```Ajouter une colonne aux tâches` est en panne, il est donc annulé.

.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);

―― En faisant bon usage de la migration, il est pratique de lier en douceur le code et la base de données.

finalement

appendice

IDE recommandé lors de l'utilisation de l'environnement WSL

--Visual Studio Code est un IDE recommandé pour créer un environnement ROR sur WSL. La procédure est brièvement décrite ci-dessous.

Pour ouvrir un projet sur WSL à partir de Visual Studio Code

  1. Installez Remote --WSL en tant qu'extension de Visual Studio Code. image.png

  2. Cliquez sur l'icône de connexion à distance en bas à gauche. image.png

  3. Sélectionnez une option [Remote-WSL ...] dans la palette. Ici, sélectionnez [Remote-WSL: New Window] image.png

  4. Vous pouvez voir que l'icône de connexion à distance en bas à gauche a changé. La notation a changé en [WSL: Ubuntu-20.04]. Sélectionnez [Ouvrir le dossier ...] pour ouvrir le dossier du projet RoR. image.png

  5. Comme indiqué ci-dessous, vous pouvez faire fonctionner le terminal en ouvrant la fonction d'explorateur dans l'arborescence de gauche, la fonction d'édition de fichier dans la fenêtre supérieure droite et en ouvrant le terminal avec "Ctrl + @", et vous pouvez effectuer la plupart des opérations sur le code source visuel. Donc c'est pratique. image.png

dépannage

Si l'erreur suivante se produit lors de l'installation des rails

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?

--Selon le message d'erreur, veuillez exécuter sudo apt-get update` ``.

Lorsqu'une erreur du compilateur C se produit lors de l'installation de rails

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.

--Republié, essayez d'installer les packages requis pour l'installation des rails avec la commande suivante.

$ sudo gem update --system
$ sudo gem install bundler
$ sudo apt-get install build-essential liblzma-dev patch ruby-dev zlib1g-dev libsqlite3-dev nodejs

Le site que j'ai utilisé comme référence

Documentation Rails Manuel Rails

Recommended Posts

Ruby on Rails - De la construction d'environnement au développement d'application simple sur WSL2
Déployer sur Ruby on Rails Elastic beanstalk (Construction de l'environnement)
[Ruby on Rails] De la construction de MySQL au changement de base de données
Mémo de construction de l'environnement Ruby on Rails 6.0
[Procédure 1 pour les débutants] Ruby on Rails: Construction d'un environnement de développement
[Docker] Construction de l'environnement de développement Rails6 / Ruby2.7 / MySQL8
Muscle Ruby on Rails Jour 1 ~ Construction de l'environnement ~
Création d'un environnement de développement pour Ruby on Rails à l'aide de Docker + VSCode (Remote Container)
Étapes pour créer un environnement de développement Ruby on Rails avec Vagrant
Comment lier Rails6 Vue (à partir de la construction de l'environnement)
[Note personnelle] Construction de l'environnement Ruby on Rails (Windows)
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 6.x)
[Erreur] Changer la construction de l'environnement pour utiliser oss (open source) de Ruby on Rails
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
Comment créer un environnement de développement Ruby on Rails avec Docker (Rails 5.x)
Construction de l'environnement de développement Rails6 [Mac]
[Introduction] Créer une application Ruby on Rails
Ingénieur Rails Environnement Construction Ruby2.7.1
Créer un environnement de développement Ruby on Rails sur AWS Cloud9
Construction de l'environnement des rails Rails5.2.1 ruby2.5.1 Catalina
[Mis à jour de temps en temps] Ruby on Rails Méthode pratique
[Construction de l'environnement Mac] Ruby on Rails (+ Webpacker gère les erreurs)
Développement d'applications JavaFX avec IntelliJ IDEA et Gradle ~ De la construction d'environnement à l'exemple de code ~
Créez un environnement de développement d'applications Rails avec Docker [Docker, Rails, Puma, Nginx, MySQL]
Construction d'environnement pour le développement d'applications Servlet
Comment utiliser Ruby on Rails
Rails sur la procédure de construction de l'environnement Docker
Créez un environnement de développement où les points d'arrêt de Ruby on Rails fonctionnent sous Windows
Remarques sur la création de l'environnement de développement de Kotlin et la migration de Java vers Kotlin
Construire un environnement PostgreSQL avec Docker (de la configuration à juste avant le développement)
Comment créer une application avec ruby on rails (en supposant que l'environnement a été construit)
Mémo de construction de l'environnement de développement Java sur Mac
Déployer sur Heroku [Ruby on Rails] Débutant
[Ruby] Création d'un environnement de développement Ruby sur Ubuntu
Préparation à l'introduction de jQuery dans Ruby on Rails
Nouvelle commande de création de l'application Ruby on Rails
[Ruby on Rails] Comment utiliser redirect_to
Bouton [Ruby on Rails] pour revenir en haut
Construction de l'environnement CentOS8.2 (x86_64) + ruby2.5 + Rails5.2 + MariaDB (10.3.17)
Passer de SQLite3 à PostgreSQL dans un nouveau projet Ruby on Rails
Essayez d'exécuter ScalarDB sur WSL Ubuntu (Construction de l'environnement)
[Développement d'applications Jakarta EE 8 avec Gradle] 1. Construction de l'environnement
Essayez de déployer l'application Rails sur EC2-Part 2 (Server Construction) -