Comment exécuter React et Rails sur le même serveur

Contexte

Quand j'ai commencé à apprendre Rails, je construisais la face avant avec VIEW en utilisant ERB, J'ai entendu dire que le SPA est populaire ces jours-ci.

Pour le moment, j'ai décidé de l'exécuter sur un autre serveur et j'ai en quelque sorte effacé les restrictions CORS, etc., et il est devenu possible d'échanger Rails et React en toute sécurité.

Comment déployez-vous ce dyno heroku? .. .. Quand j'étais inquiet, il y avait un article facile à comprendre sur le blog officiel d'Heroku, et j'ai finalement pu le construire.

J'ai pensé que ce serait utile s'il y avait des personnes similaires, alors je l'ai posté.

Conditions préalables

Article de référence: Une pile Web moderne et solide - Rails 5 API + ActiveAdmin + Create React App sur Heroku

Créer une application Rails

Créez une application rails avec la commande rails new.

N'oubliez pas de passer en mode api avec la commande --api

rails new rails_app --api

Vérifions si l'application créée démarre.

python


cd rails_app
rails s

Créer une application React

Créez une application React avec le nom client dans le répertoire racine de votre application Rails.

python


npm create-react-app client

Tout comme Rails, voyons si React fonctionne.

python


cd client
npm start 

À ce rythme, React et Rails auront des ports différents pendant le développement. Ajoutez les paramètres à package.json.

package.json


{
  "name": "client",
  "version": "0.1.0",
  "private": true,
  "proxy": "http://localhost:3001", #Ajouter ici
  ...
}

Ce paramètre permet aux Rails de reconnaître que l'application React s'exécute sur le port 3001.

React - Rails Local Edition

Créez une tâche pour lancer l'environnement local.

Écrivez une commande pour lancer React et Rails dans Procfile et appelez-la dans une tâche Rails.

Procfile est un fichier utilisé sur heroku et peut être décrit par type de processus: commande.

<process type>: <command>

Cette fois, écrivez la commande de démarrage de l'application Rails et de l'application React avec le nom de fichier Procfile.dev dans le répertoire racine.

Procfile.dev


web: cd client && PORT=3000 npm start
api: PORT=3001 && bundle exec rails s

Je veux garder la commande d'appel simple, donc je vais en faire une tâche.

start.rake


namespace :start do
    desc 'Start development server'
    task :dev do
      exec 'heroku local -f Procfile.dev'
    end
end

Lancez la commande de démarrage procfile avec la tâche.

rake start:dev

Je pense que React et Rails ont été lancés.

S'il est difficile à comprendre à partir du journal sur le terminal, il sera plus facile de comprendre si le côté Rails renvoie du Json afin qu'il puisse être récupéré du côté React.

Réagir - Rails Heroku

Déploiement sur Heroku, le thème principal.

Commencez par créer un fichier package.json dans le répertoire racine.

Écrivez une commande pour créer un fichier statique React dans le répertoire public de Rails.

package.json


{
    "name": "list-of-ingredients",
    "license": "MIT",
    "engines": {
      "node": "10.15.3",
      "yarn": "1.15.2"
    },
    "scripts": {
      "build": "yarn --cwd client install && yarn --cwd client build",
      "deploy": "cp -a client/build/. public/",
      "heroku-postbuild": "yarn build && yarn deploy"
    }
}

Créez un fichier Proc pour la production et écrivez la commande de démarrage pour les rails.

Si nécessaire, écrivez la commande migrate après la publication.

Procfile


web: bundle exec rails s
release: bin/rake db:migrate

Utilisez la CLI pour créer un dynamo sur heroku et configurer le pack de construction.

Créer une application


heroku apps:create

Paramètres du pack de création


heroku buildpacks:add heroku/nodejs --index 1
heroku buildpacks:add heroku/ruby --index 2

Maintenant que vous êtes prêt sur heroku, poussez avec git.

git add .
git commit -m "React - Rails"
git push heroku master

Ouvrez l'appli.

heroku open

Épilogue

Tout le monde s'est-il déplacé en toute sécurité?

J'apprécierais que vous me disiez s'il existe une meilleure solution.

Si cela ne fonctionne pas, veuillez lire l'article de référence suivant!

Article de référence: Une pile Web moderne et solide - Rails 5 API + ActiveAdmin + Create React App sur Heroku

Recommended Posts

Comment exécuter React et Rails sur le même serveur
Comment terminer le serveur de rails
(Ruby on Rails6) Comment créer un modèle et une table
Comment utiliser Ruby on Rails
Comment déployer Bootstrap sur Rails
Pour exécuter JavaFX sur Docker
[Avec des astuces de retour] Comment présenter React aux rails les plus simples
[Rails] Comment obtenir l'URL de la source de transition et la rediriger
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
Points à retenir et concepts dans le didacticiel Ruby on Rails
Installez Webpacker et Yarn pour exécuter Rails
[Rails] Comment utiliser la méthode de la carte
Comment trouver les dizaines et les unités
[Ruby on Rails] Comment utiliser redirect_to
[Android] Comment activer / désactiver le panneau de notification à l'aide de StatusBarManager
[Java] Comment récupérer les paramètres passés du html côté serveur
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
[Rails] Comment créer une table, ajouter une colonne et changer le type de colonne
Comment déboguer le traitement dans le modèle Ruby on Rails avec juste la console
[Rails] Comment décider de la destination par "voies ferrées"
[Ruby on Rails] Comment se connecter avec seulement votre nom et mot de passe en utilisant le bijou
Connexion SSH au serveur d'applications avec heroku
[Rails MySQL] Comment réinitialiser la base de données sur heroku
Comment créer une API avec GraphQL et Rails
Compilez et exécutez Java sur la ligne de commande
Comment trouver le score total et le score moyen
[Rails] Comment émettre des messages de réussite et d'erreur
[Java] Mémo sur la façon d'écrire la source
Comment exécuter NullpoMino 7.5.0 sur la version 64 bits d'Ubuntu 20.04.1
Comment vérifier les commandes Rails dans le terminal
[Ruby on Rails] Comment faire de la destination du lien une partie de l'ID spécifié
[Ruby on Rails] Modifiez la date de mise à jour et la date de création selon votre notation préférée
Comment trouver la distance et l'angle entre deux points sur un plan
[Ruby on Rails] Comment japonaisiser le message d'erreur de l'objet Form (ActiveModel)
Comment partager côté hôte (Windows) et côté invité (CentOS 7) avec VirtualBox
Comment écrire des rails
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
Comment exécuter l'application SpringBoot en tant que service
Que faire si le serveur Rails ne peut pas démarrer
[Ruby on Rails] Comment écrire enum en japonais
Comment exécuter javafx avec Raspeye publié le 12/07/2020