Archives de la catégorie: Ruby on Rails

Développement Mac OS X NodeJS Ruby Ruby on Rails Web

Installer un environnement de développement moderne sous OS X 10.8

Beaucoup de développeurs utilisent de plus en plus Ruby, son framework Ruby on Rails et les autres outils de développement modernes.

Nous allons voir comment installer le tout de manière « propre ».

Vous aurez alors un environnement de développement complet et performant !

Mettre à jour OS X

La dernière version en date est OS X 10.8.3. Pensez à mettre à jour votre système.

Mettre à jour Java

Java peut être nécessaire pour obtenir un environnement de développement complet.

La dernière version en date est Java 7.

Le tout est disponible sur le site Oracle.

Installer XCode et les outils en ligne de commande

XCode est disponible sur le Mac App Store.

Une fois installé, ouvrez ses préférences afin d’installer les outils en ligne de commande.

La base : Homebrew

Homebrew vous permet de disposer des bibliothèques et outils open-source en environnement OS X.

Installez Homebrew via une ligne de commande du Terminal :

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

Vous aurez peut-être à vous y reprendre à plusieurs fois.

Une fois installé, et à chaque fois que vous souhaitez installer quoi que ce soit via Homebrew, utilisez d’abord cette ligne de commande :

brew doctor

Cette ligne de commande vous demandera peut-être de supprimer, par exemple, iconv. Renommez vos fichiers, c’est plus prudent.

Si les fichiers de s’installent pas du premier coup, désinstallez puis ré-installez.

Au final, tout devrait fonctionner correctement.

Sur une installation « propre », tout se passe sans encombres.

RVM (Ruby & Ruby on Rails)

RVM vous permet d’installer plusieurs versions de Ruby sur votre Mac.

Vous pourrez également installer Ruby on Rails (RoR).

Les versions actuelles sont Ruby 2.0.0 et RoR 3.2.13.

RVM vous permet également d’installer, par exemple, la version 4.0 beta 1 de RoR. En cohabitation avec le reste : pratique !

Pour installer Ruby et Rails avec toutes les dépendances liées à Homebrew, une seule ligne de commande suffit :

\curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled

Et voilà, votre système est complètement prêt pour le développement Ruby et RoR.

Pensez à mettre à jour, si nécessaire, votre fichier .profile. (et faire le lien via source pour les fichiers .bashrc et autres)

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function* [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

Sur une installation « propre », il n’y a rien d’autre à faire.

Sinatra

Sinatra vous permet de concevoir rapidement des prototypes d’applications web, voir des applications web complètes, dans le sens où cet outil est très léger.

Son installation en une ligne de commande :

gem install sinatra

Node.js

Node.js vous permet de faire la même chose de Sinatra, du moins sur le même principe, avec de meilleures performances (potentiellement) mais moins de maturité et en Javascript (moteur V8).

brew install nodejs

PHP

Les plus nostalgiques d’entre nous souhaiterons sûrement installer ce bon vieux PHP. Pour cela, installez d’abord XQuartz.

Ensuite, installez les dépendances nécessaires :

brew tap dupes brew tap josegonzalez/homebrew-php

Ensuite, installez PHP 5.4 en choisissant judicieusement vos options :

brew options php54 brew install php54

Installez également l’extension intl :

brew install php54-intl

Et configurez le fichier /usr/local/etc/php/5.4/php.ini :

date.timezone = Europe/Paris

 Avec Symfony 2

Symfony 2 est un framework PHP qui modernise la plateforme en la rapprochant de RoR et autres.

Pour utiliser le serveur intégré à PHP 5.4 avec Symfony 2, placez-vous dans le sous-répertoire web de votre projet. Puis exécutez :

php -S 127.0.0.1:8080

Vous pourrez alors accéder à Symfony 2 dans votre navigateur via http://127.0.0.1:8080/app_dev.php.

PostgreSQL / PostGIS

Passez tout simplement par Homebrew :

brew install postgis

Des composantes de Python auront peut-être besoin d’êtres installées. Suivez les instructions à l’écran.

Initialisez votre base de données :

initdb /usr/local/var/postgres -E utf8

Lancez automatique PostgreSQL à l’ouverture de session :

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

Lancez PostgreSQL dès maintenant :

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Connectez-vous à votre base de données (nom d’utilisateur = nom d’utilisateur de session) :

psql postgres

Vous pouvez alors voir la liste des extensions installées :

SELECT * FROM pg_available_extensions;

« \q » pour quitter la console PostgreSQL.

MongoDB

Encore une fois, Homebrew est parfaitement adapté :

brew install mongodb

Lancez MongoDB à chaque ouverture de session :

ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

Lancez MongoDB dès maintenant :

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Ou, ponctuellement, via le Terminal :

mongod

Connectons-nous au serveur :

mongo

Testons un peu mongo :

db.test.save({ age: 29, "fullname":"Florent Morin"}) db.test.find()

Qui devrait retourner quelque-chose comme :

{   "_id" : ObjectId("51a9bb4d6121d24a661f17a0"),   "age" : 29,   "fullname" : "Florent Morin" }

Memcached

Si on veut bien faire les choses, et pour bien tester les projets en mode « staging » avant de les envoyer en production, l’installation de « memcached » est indispensable.

brew install memcached

Pour le lancement automatique à l’ouverture de session :

ln -sfv /usr/local/opt/memcached/*.plist ~/Library/LaunchAgents

Pour le lancement immédiat :

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.memcached.plist

Testons :

telnet localhost 11211

Puis, en telnet :

stats

Pour quitter :

quit
Share
Développement Ruby Ruby on Rails Serveur Web

Installation de Ruby et Rails sur un serveur Ubuntu 12.10

Nous allons découvrir dans cet article comment avoir un serveur clé en main, idéal comme machine virtuelle.

Installer et mettre à jour Ubuntu Server 12.10

Téléchargez Ubuntu Server 12.10 et installez le système à votre guise.

Pour ma part, j’ai fait l’installation dans une machine virtuelle Parallels 8 à partir de l’image disque Ubuntu officielle.

Afin d’accéder à la machine à distance, pensez à installer le serveur OpenSSH.

Ensuite, une mise à jour des paquets ne peut pas faire de mal.

Installer RVM

Pour installer RVM, une simple ligne de commande suffit.

curl -L get.rvm.io | bash -s stable

Ensuite, chargez RVM.

source ~/.profile

Puis activez RVM autolibs.

rvm autolibs enable

Lancez RVM requirements afin de mettre à jour automatiquement votre système.

rvm requirements

Installer Ruby

RVM permet d’installer plusieurs versions de Ruby sur une même machine. Nous allons donc installer la dernière en date : Ruby 2.0.0.

rvm install 2.0.0

Puis nous allons définir cette version comme version à utiliser par défaut.

rvm --default 2.0.0

Vérifiez l’installation. Vous devriez voir 2.0.0.

ruby --version

Parfois, il faut se déconnecter et se reconnecter afin que RVM soit bien rechargé.

Installer RubyGems

Pour continuer d’utiliser RVM afin d’installer les gems Ruby, utilisez la commande suivante.

rvm rubygems current

 Installer Rails

Nous allons utiliser gems afin d’installer Rails dans sa dernière version (3.2 à ce jour)

gem install rails

L’environnement Ruby on Rails est maintenant installé.

Il va maintenant falloir faire en sorte de pouvoir l’exécuter sur un serveur de production.

Installer Passenger

Passenger permet d’exécuter une application Rails au sein d’un serveur apache ou nginx.

gem install passenger

Tant que la version 4.0 n’est pas stable, installez-la via la commande suivante.

gem install passenger --version 4.0.0.rc6

Installer nginx et son module Passenger

RVM permet de simplifier l’installation du serveur nginx et du module Passenger.
Tout d’abord, installez les bibliothèques nécessaires.

sudo apt-get install libcurl4-openssl-dev

Ensuite, lancez l’assistant.

rvmsudo passenger-install-nginx-module

Pressez « Entrer ».
Prenez le choix par défaut en tapant « 1″, puis pressez la touche « Entrer ».
Validez le répertoire par défaut.
Laissez le système faire la suite : ça peut durer une petit moment. (5-10 minutes)

Lancer automatiquement nginx au démarrage

Première étape : arrêter toute instance éventuelle de nginx.

sudo kill `cat /usr/local/nginx/logs/nginx.pid`

Ensuite, éditez le fichier /etc/init.d/nginx

#! /bin/sh   ### BEGIN INIT INFO # Provides:          nginx # Required-Start:    $all # Required-Stop:     $all # Default-Start:     2 3 4 5 # Default-Stop:      0 1 6 # Short-Description: starts the nginx web server # Description:       starts nginx using start-stop-daemon ### END INIT INFO   PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/nginx/sbin DAEMON=/opt/nginx/sbin/nginx NAME=nginx DESC=nginx   test -x $DAEMON || exit 0   # Include nginx defaults if available if [ -f /etc/default/nginx ] ; then         . /etc/default/nginx fi   set -e   case "$1" in   start)         echo -n "Starting $DESC: "         start-stop-daemon --start --quiet --pidfile /opt/nginx/logs/$NAME.pid \                 --exec $DAEMON -- $DAEMON_OPTS         echo "$NAME.\n"         ;;   stop)         echo -n "Stopping $DESC: "         start-stop-daemon --stop --quiet --pidfile /opt/nginx/logs/$NAME.pid \                 --exec $DAEMON         echo "$NAME.\n"         ;;   restart|force-reload)         echo -n "Restarting $DESC: "         start-stop-daemon --stop --quiet --pidfile \                 /opt/nginx/logs/$NAME.pid --exec $DAEMON         sleep 1         start-stop-daemon --start --quiet --pidfile \                 /opt/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS         echo "$NAME.\n"         ;;   reload)       echo -n "Reloading $DESC configuration: "       start-stop-daemon --stop --signal HUP --quiet --pidfile /opt/nginx/logs/$NAME.pid \           --exec $DAEMON       echo "$NAME.\n"       ;;   *)         N=/etc/init.d/$NAME         echo "Usage: $N {start|stop|restart|force-reload}\n" >&2         exit 1         ;; esac exit 0

Rendez ce fichier exécutable.

sudo chmod +x /etc/init.d/nginx

Mettez à jour les runlevels des scripts lancés au démarrage.

sudo /usr/sbin/update-rc.d -f nginx defaults

Vous pouvez également ajouter /opt/nginx/sbin/ à votre PATH.

Ajoutez ensuite un utilisateur nginx à votre système.

sudo adduser --system --no-create-home --disabled-login --disabled-password --group nginx

Redémarrez votre serveur pour être bien sûr que tout fonctionne.

Si vous vous connectez via un navigateur web à votre serveur, vous devriez être accueilli par le message « Welcome to nginx! ».

Liez votre serveur web à votre app

Si ce n’est déjà fait, installez NodeJS. Certaine dépendances sont nécessaires au bon fonctionnement de Rails (en particulier grâce à la bibliothèque Javascript V8).

sudo apt-get install nodejs

Editez le fichier de configuration de nginx, /opt/nginx/conf/nginx.conf, en particulier la partie serveur :

server {   listen 80;   server_name demo.com;   passenger_enabled on;   root /var/www/app/public; }

Créons le répertoire /var/www et positionnons-nous à sa racine.

sudo mkdir -p /var/www && cd /var/www && chmod -R 777 .

Installons bundler.

gem install bundler

Il ne reste plus qu’à créer l’app de test.

rails new app && cd app

Pré-compilez les assets.

RAILS_ENV=production rake assets:precompile

Accédez à votre serveur depuis un navigateur : vous arriverez sur l’écran d’accueil de Rails.

Initialiser un dépôt git

Nous allons supprimer le contenu de l’app de test sur le serveur pour réinitialiser le répertoire /var/www/app.

Depuis le répertoire /var/git/app.git (nouvellement créé), initialisons le dépôt git.

git init --bare

Allons sur notre machine de développement.
Ajoutons le répertoire distant. (à personnaliser)

git remote add virtual ssh://ubuntu@192.168.1.39/var/git/app.git

Envoyons le contenu du code sur le serveur.

git push virtual master

Il vous suffit alors de cloner votre dépôt dans le répertoire /var/www/app et le tour est joué !

Si vous voulez faire plus simple…

Dans l’exemple d’aujourd’hui, vous avez vu la méthode « douloureuse » du déploiement Ruby on Rails. C’est formateur mais parfois indigeste.
Si vous n’avez pas trop de temps à perdre, passez par des solutions plus simples et au moins aussi efficaces telles que Heroku.

Share