3.5. Création d’applications à l’aide de Ruby on Rails
Le Ruby on Rails est un framework web écrit en Ruby. Ce guide couvre l’utilisation de Rails 4 sur Red Hat OpenShift Service sur AWS.
Consultez l’ensemble du tutoriel pour avoir une vue d’ensemble de toutes les étapes nécessaires pour exécuter votre application sur le Service OpenShift Red Hat sur AWS. Lorsque vous rencontrez un problème, essayez de lire l’ensemble du tutoriel, puis retournez à votre problème. Il peut également être utile de revoir vos étapes précédentes pour vous assurer que toutes les étapes ont été exécutées correctement.
3.5.1. Conditions préalables Copier lienLien copié sur presse-papiers!
- Connaissances de base Ruby et Rails.
- La version installée localement de Ruby 2.0.0+, Rubygems, Bundler.
- Connaissances de base sur Git.
- Instance d’exécution de Red Hat OpenShift Service sur AWS 4.
- Assurez-vous qu’une instance de Red Hat OpenShift Service sur AWS est en cours d’exécution et est disponible. Assurez-vous également que votre client CLI oc est installé et que la commande est accessible depuis votre shell de commande, de sorte que vous pouvez l’utiliser pour vous connecter à l’aide de votre adresse e-mail et mot de passe.
3.5.2. Configuration de la base de données Copier lienLien copié sur presse-papiers!
Les applications ferroviaires sont presque toujours utilisées avec une base de données. Dans le cas du développement local, utilisez la base de données PostgreSQL.
Procédure
Installer la base de données:
sudo yum install -y postgresql postgresql-server postgresql-devel
$ sudo yum install -y postgresql postgresql-server postgresql-devel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Initialiser la base de données:
sudo postgresql-setup initdb
$ sudo postgresql-setup initdb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cette commande crée le répertoire /var/lib/pgsql/data, dans lequel les données sont stockées.
Démarrer la base de données:
sudo systemctl start postgresql.service
$ sudo systemctl start postgresql.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque la base de données est en cours d’exécution, créez votre utilisateur de rails:
sudo -u postgres createuser -s rails
$ sudo -u postgres createuser -s rails
Copy to Clipboard Copied! Toggle word wrap Toggle overflow A noter que l’utilisateur créé n’a pas de mot de passe.
3.5.3. Écrire votre candidature Copier lienLien copié sur presse-papiers!
Lorsque vous démarrez votre application Rails à partir de zéro, vous devez d’abord installer le gemme Rails. Ensuite, vous pouvez procéder à la rédaction de votre demande.
Procédure
Installez le gemme Rails:
gem install rails
$ gem install rails
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Successfully installed rails-4.3.0 1 gem installed
Successfully installed rails-4.3.0 1 gem installed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Après avoir installé le gemme Rails, créez une nouvelle application avec PostgreSQL comme base de données:
rails new rails-app --database=postgresql
$ rails new rails-app --database=postgresql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Changez dans votre nouveau répertoire d’applications:
cd rails-app
$ cd rails-app
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous avez déjà une application, assurez-vous que le bijou pg (postgresql) est présent dans votre fichier Gemfile. Dans le cas contraire, modifiez votre Gemfile en ajoutant le gemme:
gem 'pg'
gem 'pg'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Générez un nouveau Gemfile.lock avec toutes vos dépendances:
bundle install
$ bundle install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow En plus d’utiliser la base de données postgresql avec le gemme pg, vous devez également vous assurer que la config/database.yml utilise l’adaptateur postgresql.
Assurez-vous de mettre à jour la section par défaut dans le fichier config/database.yml, de sorte qu’il ressemble à ceci:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créez les bases de données de développement et de test de votre application:
rake db:create
$ rake db:create
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cela crée une base de données de développement et de test dans votre serveur PostgreSQL.
3.5.3.1. Créer une page de bienvenue Copier lienLien copié sur presse-papiers!
Étant donné que Rails 4 ne sert plus une page publique statique/index.html en production, vous devez créer une nouvelle page racine.
Avoir une page d’accueil personnalisée doit faire les étapes suivantes:
- Créez un contrôleur avec une action d’index.
- Créez une page d’affichage pour l’action d’index du contrôleur de bienvenue.
- Créez un itinéraire qui sert la page racine des applications avec le contrôleur créé et la vue.
Rails offre un générateur qui complète toutes les étapes nécessaires pour vous.
Procédure
Générateur de rails d’exécution:
rails generate controller welcome index
$ rails generate controller welcome index
Copy to Clipboard Copied! Toggle word wrap Toggle overflow L’ensemble des fichiers nécessaires sont créés.
éditer la ligne 2 dans le fichier config/routes.rb comme suit:
root 'welcome#index'
root 'welcome#index'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez le serveur de rails pour vérifier la page est disponible:
rails server
$ rails server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Consultez votre page en visitant http://localhost:3000 dans votre navigateur. Lorsque vous ne voyez pas la page, vérifiez les journaux qui sont affichés sur votre serveur pour déboguer.
3.5.3.2. Configuration de l’application pour Red Hat OpenShift Service sur AWS Copier lienLien copié sur presse-papiers!
Afin que votre application communique avec le service de base de données PostgreSQL exécuté dans Red Hat OpenShift Service sur AWS, vous devez modifier la section par défaut de votre config/database.yml pour utiliser des variables d’environnement, que vous devez définir ultérieurement lors de la création du service de base de données.
Procédure
Éditez la section par défaut dans votre config/database.yml avec des variables prédéfinies comme suit:
Exemple de fichier YAML de configuration/base de données
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.3.3. Stocker votre application dans Git Copier lienLien copié sur presse-papiers!
Construire une application dans Red Hat OpenShift Service sur AWS nécessite généralement que le code source soit stocké dans un référentiel git, vous devez donc installer git si vous ne l’avez pas déjà.
Conditions préalables
- Installez git.
Procédure
Assurez-vous d’être dans votre répertoire d’application Rails en exécutant la commande ls -1. La sortie de la commande devrait ressembler à:
ls -1
$ ls -1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez les commandes suivantes dans votre répertoire d’application Rails pour initialiser et commettre votre code à git:
git init
$ git init
Copy to Clipboard Copied! Toggle word wrap Toggle overflow git add .
$ git add .
Copy to Clipboard Copied! Toggle word wrap Toggle overflow git commit -m "initial commit"
$ git commit -m "initial commit"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Après que votre application est engagée, vous devez la pousser vers un référentiel distant. Compte GitHub, dans lequel vous créez un nouveau référentiel.
Définissez la télécommande qui pointe vers votre référentiel git:
git remote add origin git@github.com:<namespace/repository-name>.git
$ git remote add origin git@github.com:<namespace/repository-name>.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Appuyez sur votre application vers votre référentiel git distant.
git push
$ git push
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4. Déploiement de votre application dans Red Hat OpenShift Service sur AWS Copier lienLien copié sur presse-papiers!
Il est possible de déployer votre application dans Red Hat OpenShift Service sur AWS.
Après avoir créé le projet d’application rails, vous êtes automatiquement passé au nouvel espace de noms du projet.
Le déploiement de votre application dans Red Hat OpenShift Service sur AWS comporte trois étapes:
- Création d’un service de base de données à partir de Red Hat OpenShift Service sur l’image PostgreSQL d’AWS.
- Créer un service frontend à partir de Red Hat OpenShift Service sur l’image du constructeur Ruby 2.0 d’AWS et votre code source Ruby on Rails, qui sont câblés avec le service de base de données.
- Créer un itinéraire pour votre application.
3.5.4.1. Création du service de base de données Copier lienLien copié sur presse-papiers!
Procédure
L’application Rails s’attend à un service de base de données en cours d’exécution. Ce service utilise l’image de base de données PostgreSQL.
Afin de créer le service de base de données, utilisez la commande oc new-app. À cette commande, vous devez passer quelques variables d’environnement nécessaires qui sont utilisées à l’intérieur du conteneur de base de données. Ces variables d’environnement sont nécessaires pour définir le nom d’utilisateur, le mot de passe et le nom de la base de données. Les valeurs de ces variables d’environnement peuvent être modifiées par ce que vous souhaitez. Les variables sont les suivantes:
- AJOUTER AU PANIER POSTGRESQL_DATABASE
- AJOUTER AU PANIER POSTGRESQL_USER
- AJOUTER AU PANIER POSTGRESQL_PASSWORD
La définition de ces variables garantit:
- Il existe une base de données avec le nom spécifié.
- Il existe un utilisateur avec le nom spécifié.
- L’utilisateur peut accéder à la base de données spécifiée avec le mot de passe spécifié.
Procédure
Créer le service de base de données:
oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password
$ oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Afin de définir également le mot de passe pour l’administrateur de la base de données, ajouter à la commande précédente avec:
-e POSTGRESQL_ADMIN_PASSWORD=admin_pw
-e POSTGRESQL_ADMIN_PASSWORD=admin_pw
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Découvrez les progrès:
oc get pods --watch
$ oc get pods --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5.4.2. Création du service frontend Copier lienLien copié sur presse-papiers!
Afin d’apporter votre application à Red Hat OpenShift Service sur AWS, vous devez spécifier un référentiel dans lequel votre application vit.
Procédure
Créez le service frontend et spécifiez les variables d’environnement liées à la base de données qui ont été configurées lors de la création du service de base de données:
oc new-app path/to/source/code --name=rails-app -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password -e POSTGRESQL_DATABASE=db_name -e DATABASE_SERVICE_NAME=postgresql
$ oc new-app path/to/source/code --name=rails-app -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password -e POSTGRESQL_DATABASE=db_name -e DATABASE_SERVICE_NAME=postgresql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Avec cette commande, Red Hat OpenShift Service sur AWS récupère le code source, configure le constructeur, construit l’image de votre application et déploie l’image nouvellement créée avec les variables d’environnement spécifiées. L’application est nommée Rails-app.
Les variables d’environnement ont été ajoutées en consultant le document JSON de la configuration de déploiement de l’application rails:
oc get dc rails-app -o json
$ oc get dc rails-app -o json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Consultez la section suivante:
Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Consultez le processus de construction:
oc logs -f build/rails-app-1
$ oc logs -f build/rails-app-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Après la construction est terminée, regardez les pods en cours d’exécution dans Red Hat OpenShift Service sur AWS:
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Il faut voir une ligne commençant par myapp-<numéro>-<hash>, et c’est votre application qui s’exécute dans Red Hat OpenShift Service sur AWS.
Avant que votre application ne soit fonctionnelle, vous devez initialiser la base de données en exécutant le script de migration de la base de données. Il y a deux façons de le faire:
À partir du conteneur frontal en cours d’exécution:
Exec dans le conteneur frontal avec commande rsh:
oc rsh <frontend_pod_id>
$ oc rsh <frontend_pod_id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exécutez la migration à partir de l’intérieur du conteneur:
RAILS_ENV=production bundle exec rake db:migrate
$ RAILS_ENV=production bundle exec rake db:migrate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Lorsque vous exécutez votre application Rails dans un environnement de développement ou de test, vous n’avez pas à spécifier la variable d’environnement RAILS_ENV.
- En ajoutant des crochets de cycle de vie avant déploiement dans votre modèle.
3.5.4.3. Créer un itinéraire pour votre application Copier lienLien copié sur presse-papiers!
Il est possible d’exposer un service pour créer un itinéraire pour votre application.
Assurez-vous que le nom d’hôte que vous spécifiez résout dans l’adresse IP du routeur.