Si vous utilisez déjà Ruby on Rails (si vous hésitez encore, jetez un œil à pourquoi choisir ruby on rails) vous vous dites sûrement que rails est déjà très productif out of the box, et vous avez raison.
Base de donnée, serveur embarqué, nul besoin d’un IDE ; tout est là pour commencer à prototyper rapidement. Mais les outils évoluent et il est possible de faire encore mieux.
Pow est un outil qui embarque à la fois un mini serveur DNS et HTTP. L’installation se borne à l’exécution d’un script sh.
curl get.pow.cx | sh
Le script va récupérer la dernière version et s’installer au démarrage. Attention le script nécessite mac os x 10.6 pour fonctionner, même si une branche linux existe sur ce fork.
L’objectif de pow est de charger vos applications à la demande, il suffit pour cela de faire un lien symbolique dans le dossier ~/.pow
ln -s /mon/app ~/.pow/
Une fois réalisé, faites pointer votre navigateur sur http://app.dev
Le serveur web embarqué est nack. C’est un serveur rack basé sur node.js
Pour les applications rails 3 il n’y a rien à faire, pow s’accommode parfaitement de bundler et rvm.
Pour les applications rails 2 il faut fournir un fichier rackup, qui explique à n’importe quel serveur compatible rack comment booter l’application.
Ce fichier se présente sous cette forme:
require File.dirname(__FILE__) + '/config/environment'
run ActionController::Dispatcher.new
Au delà d’un certain temps (5 min par défaut, configurable dans ~/.powconfig) d’utilisation, l’app sera arrêtée et déchargée.
Si vous avez besoin de forcer le re-chargement de l’application il suffit de faire un:
touch tmp/restart.txt
comme avec passenger. Mais le rechargement forcé devrait être de l’histoire ancienne grâce à l’outil suivant.
Guard est un outil de détection et de gestion des événements relatifs au système de fichier. Sa force est d’être cross-platform en s’appuyant sur des outils éprouvés selon le type d’OS.
Cela permet par exemple d’exécuter une action lors du changement d’un fichier. Exemples:
Guard s’installe comme n’importe quelle gem, il suffit de l’ajouter au Gemfile.
Ensuite on crée notre Guardfile avec: guard init.
Guard possède un certain nombre de modules complémentaires. Il y en a par exemple un pour s’interfacer avec pow. Dans le Gemfile:
group :development do
gem 'guard-pow'
end
Et enfin:
guard init pow
Cela vous crée le fichier Guardfile suivant:
guard 'pow' do
watch('.powrc')
watch('.powenv')
watch('.rvmrc')
watch('Gemfile')
watch('Gemfile.lock')
watch('config/application.rb')
watch('config/environment.rb')
watch(%r{^config/environments/.*\.rb$})
watch(%r{^config/initializers/.*\.rb$})
end
À la modification de l’un de ces fichiers guard va donc relancer pow automatiquement.
Livereload pousse l’automatisation encore un peu plus loin.
Une fois la gem et l’extension (disponible pour safari, chrome, firefox 4) installée, dans le répertoire de l’application il suffit de lancer livereload en console puis de connecter le navigateur.
Une fois fait, chaque changement dans un fichier observé (vue, css, js…) entrainera un rechargement automatique du navigateur.
Il est bien sûr possible d’observer différents types de fichiers en ajoutant leur extension dans le fichier .livereload.
Livereload utilise les websocket pour communiquer avec le navigateur.
Enfin, il existe guard-livereload, qui s’installe comme les autres gem, pour ne plus lancer livereload manuellement.
Au final au lieu de lancer un rails server votre commande par défaut deviendra:
bundle exec guard
L’équipe Synbioz.
Libres d’être ensemble.
Nos conseils et ressources pour vos développements produit.