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 OpenShift Dedicated.
Consultez l’ensemble du tutoriel pour avoir un aperçu de toutes les étapes nécessaires pour exécuter votre application sur OpenShift Dedicated. 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 d’OpenShift Dédiée 4.
- Assurez-vous qu’une instance d’OpenShift Dedicated est en cours d’exécution et qu’elle 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-develInitialiser la base de données:
$ sudo postgresql-setup initdbCette 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.serviceLorsque la base de données est en cours d’exécution, créez votre utilisateur de rails:
$ sudo -u postgres createuser -s railsA 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 railsExemple de sortie
Successfully installed rails-4.3.0 1 gem installedAprès avoir installé le gemme Rails, créez une nouvelle application avec PostgreSQL comme base de données:
$ rails new rails-app --database=postgresqlChangez dans votre nouveau répertoire d’applications:
$ cd rails-appLorsque 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'Générez un nouveau Gemfile.lock avec toutes vos dépendances:
$ bundle installEn 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:
default: &default adapter: postgresql encoding: unicode pool: 5 host: localhost username: rails password: <password>Créez les bases de données de développement et de test de votre application:
$ rake db:createCela 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 indexL’ensemble des fichiers nécessaires sont créés.
éditer la ligne 2 dans le fichier config/routes.rb comme suit:
root 'welcome#index'Exécutez le serveur de rails pour vérifier la page est disponible:
$ rails serverConsultez 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 OpenShift Dedicated Copier lienLien copié sur presse-papiers!
Afin que votre application communique avec le service de base de données PostgreSQL exécuté dans OpenShift Dedicated, 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
<% user = ENV.key?("POSTGRESQL_ADMIN_PASSWORD") ? "root" : ENV["POSTGRESQL_USER"] %> <% password = ENV.key?("POSTGRESQL_ADMIN_PASSWORD") ? ENV["POSTGRESQL_ADMIN_PASSWORD"] : ENV["POSTGRESQL_PASSWORD"] %> <% db_service = ENV.fetch("DATABASE_SERVICE_NAME","").upcase %> default: &default adapter: postgresql encoding: unicode # For details on connection pooling, see rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV["POSTGRESQL_MAX_CONNECTIONS"] || 5 %> username: <%= user %> password: <%= password %> host: <%= ENV["#{db_service}_SERVICE_HOST"] %> port: <%= ENV["#{db_service}_SERVICE_PORT"] %> database: <%= ENV["POSTGRESQL_DATABASE"] %>
3.5.3.3. Stocker votre application dans Git Copier lienLien copié sur presse-papiers!
Construire une application dans OpenShift Dedicated 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 -1Exemple de sortie
app bin config config.ru db Gemfile Gemfile.lock lib log public Rakefile README.rdoc test tmp vendorExécutez les commandes suivantes dans votre répertoire d’application Rails pour initialiser et commettre votre code à git:
$ git init$ git add .$ git commit -m "initial commit"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>.gitAppuyez sur votre application vers votre référentiel git distant.
$ git push
3.5.4. Déploiement de votre application sur OpenShift Dedicated Copier lienLien copié sur presse-papiers!
Il est possible de déployer votre application sur OpenShift Dedicated.
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 OpenShift Dedicated comporte trois étapes:
- Création d’un service de base de données à partir de l’image PostgreSQL d’OpenShift Dedicated.
- Création d’un service frontend à partir de l’image de constructeur Ruby 2.0 d’OpenShift Dedicated et de 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=passwordAfin 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_pwDécouvrez les progrès:
$ oc get pods --watch
3.5.4.2. Création du service frontend Copier lienLien copié sur presse-papiers!
Afin d’apporter votre application à OpenShift Dedicated, 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=postgresqlAvec cette commande, OpenShift Dedicated 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 jsonConsultez la section suivante:
Exemple de sortie
env": [ { "name": "POSTGRESQL_USER", "value": "username" }, { "name": "POSTGRESQL_PASSWORD", "value": "password" }, { "name": "POSTGRESQL_DATABASE", "value": "db_name" }, { "name": "DATABASE_SERVICE_NAME", "value": "postgresql" } ],Consultez le processus de construction:
$ oc logs -f build/rails-app-1Après la construction est terminée, regardez les pods en cours d’exécution dans OpenShift Dedicated:
$ oc get podsIl faut voir une ligne commençant par myapp-<numéro>-<hash>, et c’est votre application qui s’exécute dans OpenShift Dedicated.
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>Exécutez la migration à partir de l’intérieur du conteneur:
$ RAILS_ENV=production bundle exec rake db:migrateLorsque 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.