Développement Web Ruby
par Sylvain CLAUDEL

Derniers posts

Installation de Sphinx full-text search (avec stemmer french) pour postgresql

Date d'édition 2010-10-13 à 14:37

Installation de Sphinx (vous savez le moteur de recherche full-text, qui vous permet de trouver "maison" quand vous cherchez "maisonette") sur Debian / Ubuntu :

Téléchargement et extraction de libstemmer_c :

wget https://snowball.tartarus.org/dist/libstemmer_c.tgz
tar xzf libstemmer_c.tgz

Téléchargement et extraction de Sphinx :

wget https://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
tar xzf sphinx-0.9.9.tar.gz

Déplacement de libstemmer_c :

cp -R libstemmer_c/* sphinx-0.9.9/libstemmer_c/

Installation de Sphinx :

cd sphinx-0.9.9
./configure --with-libstemmer --with-pgsql=/usr/include/postgresql --without-mysql
make
sudo make install

Aide : Chemin des libs postgresql (vous devez avoir installé les paquets qui vont bien) :

pg_config --pkgincludedir

Tutorial Rubyonrails 3 - Partie 1 - MVC, model, view, controller (rails command)

Date d'édition 2010-10-13 à 11:22

Partie 1 – Rails3 - MVC, model, view, controller (rails command)

N’hésitez à mettre des commentaires / à corriger mes fautes / à rajouter des choses !

Maintenant que vous avez créé votre projet vous allez avoir besoin de créer des models, vues et controlleurs.
Rapide rappel pour ceux qui n'ont jamais entendu ces termes :

Pattern MVC : modèle, vues, controleur (model, view, controller)

Model : class du monde réel (voiture, chien, article, commentaire)
View : les fichiers qui présentent les donnés (pour nous des fichiers html, pdf, …)
Controller : permet de faire des traitements sur les modèles, charger un objet, le modifier...

Voir aussi :
https://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur

La commande « rails generate » permet de vous macher le travail.
Rails generate scaffold : permet de créer un model, avec son controller et ses views
Rails generate model : permet de créer un model
Rails generate controller : permet de créer un controller
Rails generate -h vous donnera plus de détail !

Il existe d'autres commandes

Rails server (ou rails s): démarre le server
Rails console (ou rails c) : démarre la console, cette console charge tout le code de l'application et vous permet de taper du code en live.

Et d'autre commande rails dont je ne m'occupe pas pour le moment !

Par contre il est intéressant de voir les tâches rake  (rake est censé être un « make » pour ruby):
En console faite :

rake -T

Voici différentes tâches (tasks) bien pratique :

rake db:migrate    #permet de mettre à jour le schéma de base de données grâce aux migrations (nous verrons plus tard les migrations : partie 3)
rake routes #permet de voir les routes de l’application. (nous verrons plus tard les routes)

Vous pouvez tester votre serveur ! Executez ces commandes dans l’ordre :

#Installe les gems manquant
bundle install
#execute les migrations
rake db:migrate
#démarre le serveur
rails server

Lancez votre navigateur à l'adresse

https://localhost:3000/

Vous allez voir une page qui décrit votre environnement rails.

Prochainement Partie 2 – Création des models (rails generate model)

Tutorial Rubyonrails 3 - Partie 0 - Arborescence d'un projet rails3 et environnement

Date d'édition 2010-10-12 à 21:53

Tutorial Rubyonrails 3 - Partie 0 - Arborescence d'un projet rails3 et environnement

Il s’agit de la première partie d’une série de tutorials rubyonrails 3 pour les novices qui ne connaissent pas rails 2.
N’hésitez à mettre des commentaires / à corriger mes fautes / à rajouter des choses !
Bon créons une application rails (le classique blog) :

rails new monblog

Voici l'arborescence générée :

app : il contient le code source de votre application
app/controllers : il contient les controllers
app/helpers : il contient les helpers
app/mailers : il contient les mailers
app/models : il contient les models
app/views : il contient les vues
config : les fichiers de configuration de votre application (base de données, routes, et autres configurations)
db : contient les migrations
doc : vous mettez ici la doc de votre application
lib : pour des nouvelles bibliothèques
log : contient les logs de l'application
public : contient les fichiers clients (image, js, css)
public/images : contient les images de votre application
public/javascripts : contient les fichiers javascripts de votre application
public/stylecheets : contient les fichiers css de votre application
script : contient le script rails
test : contient les fichiers de test (unitaires / fonctionnels / intégrations)
tmp : contient les sessions, et les fichiers temporaires
vendor : contient les plugins rails
vendor/plugins : quand on installe un plugin il se trouve ici
Gemfile : contient la liste des gems dont l'application a besoin pour fonctionner
Rakefile
README


Rails possède 3 environnement :
Production : quand le site est déployé.
Development : quand on développe, plus lent qu'en production mais supporte la modification de code sans redemarrage du serveur.
Test : environnement destiné à être utiliser pour faire les tests.

En console vous pouvez précisé l'environnement de cette manière :
RAILS_ENV=env

Exemple :
RAILS_ENV=production rails console

Env = production ou development ou test

Par défaut l'environnement development est pris en compte.
Des éléments de configuration peuvent changer suivant l'environnement (la base de données à utiliser, la mise en cache des fichiers...)
Vous pouvez tout de suite ouvrir le fichier config/database.yml qui vous permet de définir les bases de données pour chaque environnement, mais ne modifier rien pour le moment !
Garder sqlite3 pour le développement !

Prochainement Partie 1 – MVC, model, view, controller (rails command)

readline rvm ruby 1.8.7 ou ruby 1.9.2

Date d'édition 2010-10-12 à 18:21

Erreur : `require': no such file to load -- readline

Pour résoudre cette erreur, il faut installer le package readline avec rvm puis réinstaller ruby avec rvm. Pas de panique ça prend 3 lignes:

rvm package install readline
rvm remove 1.8.7
rvm install 1.8.7 -C --with-readline-dir=$HOME/.rvm/usr

Voir aussi https://blog.escarworld.com/post/2010/09/28/openssl-rvm-ruby-1.8.7-ou-ruby-1.9.2
Vous pouvez évidemment ajouter ce qu'il faut pour openssl sur la même ligne...

Installation Ruby enterprise edition (REE) + Passenger + Nginx

Date d'édition 2010-10-12 à 10:14

Voici les étapes pour installer ree avec passenger et nginx, en gras les commandes à taper :

sudo aptitude install build-essential zlib1g-dev libssl-dev libreadline6-dev

Allez récupéré REE avec l'url disponible ici (elle est dynamique) : https://www.rubyenterpriseedition.com/download.html

wget URL_REE

wget https://nginx.org/download/nginx-0.8.52.tar.gz

tar xzf nginx-0.8.52.tar.gz

tar xzf ruby-enterprise-1.8.7-2010.02.tar.gz

sudo ./ruby-enterprise-1.8.7-2010.02/installer

Enter (to continue)

Enter (/opt/ruby....)

Compilation.... puis message :

To install the aforementioned gems, please use the following commands:

* /opt/ruby-enterprise-1.8.7-2010.02/bin/ruby /opt/ruby-enterprise-1.8.7-2010.02/bin/gem install mysql

Enter

sudo /opt/ruby-enterprise-1.8.7-2010.02/bin/passenger-install-nginx-module 

Enter   

2 (Configuration à la main)

/home/votre_home/nginx-0.8.52/ (Please specify the directory:)

Enter (Please specify a prefix directory [/opt/nginx]:)

--with-http_gzip_static_module --with-http_ssl_module --with-http_flv_module --with-md5-asm --with-md5=/usr/include --with-sha1-asm --with-sha1=/usr/include (Extra arguments to pass to configure script:)

Enter (confirm)

Compilation d'nginx....

Enter

A la fin de l'installation vous avez les lignes de configuration des serveurs virtuels (virtual host) :

   server {

      listen 80;

      server_name www.yourhost.com;

      root /somewhere/public;   # <--- be sure to point to 'public'!

      passenger_enabled on;

   }

On va ici écrire le script init.d pour nginx :

sudo nano /etc/init.d/nginx

Copiez / Coller ce qui suit :

#==============  Début  ==============

#! /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

DAEMON=/opt/nginx/sbin/nginx

NAME=nginx

DESC=nginx

PID=/opt/nginx/logs/$NAME.pid

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 $PID --exec $DAEMON -- $DAEMON_OPTS

        echo "$NAME."

        ;;

  stop)

        echo -n "Stopping $DESC: "

        start-stop-daemon --stop --quiet --pidfile $PID --exec $DAEMON

        echo "$NAME."

        ;;

  restart|force-reload)

        echo -n "Restarting $DESC: "

        start-stop-daemon --stop --quiet --pidfile $PID --exec $DAEMON

        sleep 1

        start-stop-daemon --start --quiet --pidfile $PID --exec $DAEMON -- $DAEMON_OPTS

        echo "$NAME."

        ;;

  reload)

      echo -n "Reloading $DESC configuration: "

      start-stop-daemon --stop --signal HUP --quiet --pidfile $PID --exec $DAEMON

      echo "$NAME."

      ;;

  *)

        N=/etc/init.d/$NAME

        echo "Usage: $N {start|stop|restart|force-reload}" >&2

        exit 1

        ;;

esac

exit 0

#===============  Fin   ===============


Donnez les droits d'executions :

[EDIT] oups les droits d'executions c'est +x

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

Et vous pouvez démarrer nginx :

sudo 

/etc/init.d/nginx start

Si vous pouvez faire des liens symboliques sur les binaires pour éviter de taper le chemin absolu :

/opt/ruby-enterprise-1.8.7-2010.02/bin/gem

/opt/ruby-enterprise-1.8.7-2010.02/bin/irb

/opt/ruby-enterprise-1.8.7-2010.02/bin/rake

/opt/ruby-enterprise-1.8.7-2010.02/bin/ruby

Développement ruby et geekeries - rivsc