Une des nouveautés apportée par cette version est le support de node.js, framework destiné à développer des applications réseau facilement scalables en JavaScript (du côté serveur), utilisant la machine virtuelle V8.
Installation de heroku
$ gem install heroku
Application basique
On va écrire une application la plus simple possible, le but n'étant pas d'apprendre le node.js, donc un "hello world" fera parfaitement l'affaire.var express = require('express'); var app = express.createServer(express.logger()); app.get('/', function(request, response) { response.send('Hello World!'); }); var port = process.env.PORT || 3000; app.listen(port, function(){ console.log("Listening on " + port); });
Utilisation de npm
Cedar reconnait une app node.js si il y a un fichier package.json, donc même si l'application n'a pas de dépendance, il faut inclure ce fichier.{ "name": "node-example", "version": "0.0.1", "dependencies": { "express": "2.2.0" } }
Il est préférable de ne pas déployer le fichier node_modules, donc ajoutons le au .gitignore.
Déclaration des "process types" with Foreman/Procfile
Pour exécuter l'application, nous devons déclarer la commande à utiliser pour la lancer, donc simplement lancer notre script.Dans le fichier Procfile :
web: node web.js
On peut donc maintenant lancer l'appli avec Foreman
$ gem install foreman $ foreman start 14:39:04 web.1 | started with pid 24384 14:39:04 web.1 | Listening on 5000
L'application est donc accessible sur le port 5000.
Déploiement
Heroku nécessitant git, la première chose à faire est de versionner l'application :$ git init Initialized empty Git repository in .git/ $ git add . $ git commit -m "new app" Created initial commit 5df2d09: new app
Ensuite, il faut créer l'application Heroku sur la plateforme, via l'api en ligne de commande :
$ heroku create --stack cedar Creating radiant-river-296... done, stack is cedar http://radiant-river-296.herokuapp.com/ | git@heroku.com:radiant-river-296.git Git remote heroku added
Une application appname vierge nous attend donc chez Heroku, il suffit de pousser notre application avec git pour la voir en ligne immédiatement :
$ git push heroku master Counting objects: 9, done. Delta compression using up to 4 threads. Compressing objects: 100% (7/7), done. Writing objects: 100% (9/9), 923 bytes, done. Total 9 (delta 2), reused 0 (delta 0) -----> Heroku receiving push -----> Node.js app detected -----> Vendoring node 0.4.7 -----> Installing dependencies with npm 1.0.6 mime@1.2.2 ./node_modules/express/node_modules/mime connect@1.4.1 ./node_modules/express/node_modules/connect qs@0.1.0 ./node_modules/express/node_modules/qs express@2.1.0 ./node_modules/express Dependencies installed -----> Discovering process types Procfile declares types -> web -----> Compiled slug size is 3.1MB -----> Launching... done, v4 http://radiant-river-296.herokuapp.com deployed to Heroku To git@heroku.com:radiant-river-296.git * [new branch] master -> master
Avant de voir notre application en ligne, il faut la scaler :
Before looking at the app on the web, we’ll need to scale the web process:
$ heroku ps:scale web=1 Scaling web processes... done, now running 1 Now, let’s check the state of the app’s processes: $ heroku ps Process State Command ------------ ------------------ -------------------------------------------- web.1 up for 10s node web.js The web process is up. Review the logs for more information: $ heroku logs 2011-03-10T10:22:30-08:00 heroku[web.1]: State changed from created to starting 2011-03-10T10:22:32-08:00 heroku[web.1]: Running process with command: `node web.js` 2011-03-10T10:22:33-08:00 heroku[web.1]: Listening on 18320 2011-03-10T10:22:34-08:00 heroku[web.1]: State changed from starting to up
Tout est ok, notre app est accessible, on peut l'ouvrir via un simple heroku open.
Aucun commentaire:
Enregistrer un commentaire