Archive

Articles taggués ‘rails’

gmate

13/05/2010

D’un côté je suis un utilisateur de Netbeans que je trouve très pratique pour développer avec Rails. Mais la bête est gourmande en ressources et demande de la place à l’écran pour être pleinement exploitée (mais je le trouve plus pratique qu’Eclipse quand la place est réduite). Pour éditer un petit script, ou pour travailler sur un netbook ça n’est pas l’idéal. Par ailleurs si Netbeans permet de travailler de manière très productive avec Subversion, il n’en est pas de même pour Git à ce jour.

D’un autre côté, je suis aussi un utilisateur de Vi. Dès que j’ai une console ouverte je vais automatiquement l’utiliser, quitte à … ouvrir une autre console pour vi ! Mais pour travailler sur un projet qui demande de naviguer beaucoup entre les fichiers je trouve que ça n’est pas très pratique. Je ne suis pas non plus un expert de cet outil.

Entre les deux il y a les éditeurs de texte en mode graphique, mais souvent il leur manque des petites choses bien pratiques pour être productif. Par exemple j’apprécie beaucoup SciTe pour sa légèreté, il est notamment très efficace pour ouvrir de très gros fichiers, mais on est loin d’un IDE.

Longtemps j’ai négligé Gedit, lui préférant justement SciTe pour sa rapidité. Mais il existe une solution pour le rendre plus pratique : gmate . C’est un mélange de plugins, de thèmes, et un exécutable permettant de lancer gedit à partir d’un répertoire donné et rendant la main.

L’essentiel des explications est ici : http://github.com/gmate/gmate . Le problème est ensuite de faire le tri entre les différents plugins pour voir ceux qui sont pratique ou non (selon les habitudes de chacun), ainsi que faire le tri pour éviter ceux qui ne semblent pas fonctionner correctement.

Très rapidement, l’installation sous Ubuntu 10.04 :

  • sudo add-apt-repository ppa:ubuntu-on-rails/ppa
  • sudo apt-get update
  • sudo apt-get install gedit-gmate

Pour adapter l’usage à Ruby et Rails, il faut modifier la gestion des espaces dans les préférences : choisir “Insérer des espaces au lieu des tabulations” et indiquer “2″ pour la largeur.

Après l’installation il y a un choix important de thèmes. Choisir celui qui convient est une activité chronophage !

Voici les plugins que j’ai retenu (en plus ceux activés par défaut) et qui semblent fonctionner correctement. C’est un choix à faire en fonction de ses propres habitudes de travail :

  • Extraits de code : permet de saisir rapidement en tapant quelques caractères puis TAB et zou…
  • Find in Files : ajoute un onglet dans la barre latéral permettant d’effectuer une recherche dans l’ensemble des fichiers à partir du répertoire du projet.
  • Rails File Loader : détecte les fichiers lié à RoR et adapte la coloration syntaxique. Pas forcément indispensable.
  • Regex Search and Replace : permet d’effectuer une recherche/remplacement dans le fichier courant en utilisant des expressions régulières, s’active avec Ctrl-Alt-H.
  • Save without trailing space : pour éviter le gaspillage en supprimant les espaces en fin de ligne et les sauts de lignes vides en fin de fichier.
  • Smart Indent : indentation automatique lors de la frappe.
  • Snap Open : permet d’ouvrir rapidement un fichier avec Ctrl-Alt-O et en ne saisissant qu’une partie du nom.
  • TabSwitch : permet de naviguer entre les onglets avec Ctrl-Tab comme dans la plupart des IDE, Firefox, …

Quelques informations complémentaires ici : http://blog.siverti.com.br/gmate/

Sam. Général, Informatique , ,

PostgreSQL et la connexion locale

01/03/2010

Voici un petit casse tête qui a du arriver à plus d’une personne concernant PostgreSQL. Il s’agit de se connecter à une base de données locale avec un compte utilisateur fraîchement créé. Le contexte est ici Ubuntu 9.10 et PostgreSQL 8.4.

Vous créez une base de données et un utilisateurs (en étant superutilisateur bien entendu) :

create role toto login password ‘pwtoto’;

create database dbtoto with owner=toto encoding=’UTF8′;

Puis vous essayez de vous connecter à la base depuis un shell :

psql dbtoto -U toto

psql dbtoto -U toto -W

Et à chaque fois, c’est un échec… “psql: FATAL:  authentification Ident échouée pour l’utilisateur << toto >>”

Maintenant il y a de quoi perdre par mal de temps en contrôlant tout ce qu’on a pu faire, en ré-essayent, en consultant le “man” de psql, etc… Pourtant le message d’erreur contient ici un début de réponse : “Ident”.

En voulant se connecter de cette manière, le client va utiliser une connexion via socket Unix (et pas via TCP/IP). Or dans le fichier /etc/postgresql/8.4/main/pg_ident.conf il est indiqué que pour ce type de connexion le méthode d’authentification sera “ident”. Pour faire court, l’authentification de l’utilisateur est effectuée par le système d’exploitation, ce qui ici échouera puisque “toto” est inconnu en tant qu’utilisateur du système. Le détail de l’explication ici : Authentification fondée sur ident

Par contre en utilisant un socket IPv4 l’authentification sera “md5″, c’est à dire qu’il utilisera le mot de passe crypté envoyé par le client. Et là l’authentification sera effectuée en impliquant uniquement PostgreSQL. Pour forcer l’utilisation d’un socket IPv4 (et régler le problème) :

psql dbtoto -U toto -h localhost

Pour plus d’explication, se reporter au chapitre Authentification du client de la documentation de PostgreSQL, et prendre la peine de regarder ce qu’il y a dans son propre fichier pg_ident.conf.

Cette subtilité étant au niveau de la liaison entre client et serveur PostgreSQL, la problématique sera la même pour un processus tel qu’un serveur Web. Par exemple dans le fichier database.yml de Rails il faudra ajouter une entrée “host”, sans quoi la connexion échouera (Rails n’ajoute pas cette entrée par défaut).

Sam. Informatique ,

Gestion de projet : redMine

18/05/2007

Cela faisait quelques temps que je cherchais une solution de gestion de projet. Quelque chose de simple à mettre en oeuvre et à utiliser, qui soit capable de gérer des tickets, contienne de quoi faire un petite doc interne, avec une gestion de droits, et si possible pouvant s’interfacer avec Subversion. Et je ne trouvais pas…

Il y a bien entendu Trac, mais ça ne s’installe pas en deux coups de cuillères à pot, et je n’avais pas envie de m’investir dans Python, investissant beaucoup d’énergie dans Ruby et Rails. C’est d’ailleurs dans cet univers que je cherchais mon bonheur… et que je l’ai (finalement) trouvé : redMine.

Il est possible de faire un test en ligne du logiciel pour se faire une première idée. Une installation locale pour faire un tour plus complet du logiciel est simple et rapide (pour qui a déjà Ruby on Rails d’installé). Le logiciel s’avère être assez complet et très paramétrable sans pour autant être une usine à gaz. Bien au contraire, il se prend en main facilement tant pour l’administration des projets (il est multi-projets) que pour l’utilisation au quotidien. Pour ne rien gâcher, l’apparence est soignée.

Sam. Informatique , ,

Mise en production de Rails sous Ubuntu 6.06

16/12/2006

Ce document a pour objectif de préparer une mise en production d’un ou plusieurs sites développé(s) avec Ruby On Rails sous Ubuntu 6.06. Pour configurer un environnement de développement, se référer au document Installer Ruby et RoR sur Ubuntu 6.06 (Dapper) .

Le choix technique est ici d’utiliser Mongrel pour faire fonctionner des instances de Rails, et d’utiliser Apache 2.2 pour réceptionner les requêtes et les distribuer aux différentes instances. Apache servira également le contenu statique. Tout ceci est très bien explique ici : Scaling Rails with Apache 2.2, mod_proxy_balancer and Mongrel.

Certains choix ne sont en rien obligatoires : il n’y a pas une seule et unique manière de procéder. Par ailleurs l’installation décrite est une base pour une mise en production, mais n’est pas en soit totalement sécurisée. Il faut encore penser firewall, sauvegardes, rotation de logs, …

Ce qui suit est long (mais détaillé), inspirez profondément avant de continuer ;)

Lire la suite…

Sam. Informatique , ,

Mongrel et les droits des fichiers

22/11/2006

Je souhaite mettre en place un hébergement d’applications basés sur Ruby On Rails en utilisant Mongrel. L’objectif n’est pas de faire un hébergement mutualisé, mais de m’en imposer certaines contraintes afin de séparer ce que fait l’administrateur et le développeur.

Or par défaut Mongrel Cluster utilise un fichier de paramètres présent dans le répertoire config de l’application. De même que le fichier pid (permettant d’arrêter les processus) est présent dans le répertoire log. En cas de fausses manipulations du développeur c’est fâcheux. En cas de mauvaises intentions c’est pire (possibilité d’avoir les droits root en se débrouillant bien). Non pas que je soit suspicieux, mais j’aime bien cloisonner les choses lorsque cela les rends soit plus claires, soit plus sures.

Je propose ici la mise en place d’un script qui permette de gérer les clusters de Mongrel en utilisant des fichiers de configurations stockés totalement indépendamment de l’application d’une part (protégé contre toute modification), et d’autre part qui n’exécute jamais les script directement avec les droits de root afin de palier à toute manipulation frauduleuse des fichiers pid (il y aurait moyen de tuer n’importe quel processus).

Je pars ici du principe que Mongrel et Mongrel Cluster sont installés sur le système. Pour l’occasion le système sera un Ubuntu 6.06, mais rien n’interdit de le faire sur une autre distribution (ou un autre *nix) en adaptant un poil.

Avant tout chose, créons le répertoire qui contiendra tout les fichiers de configuration (seul root aura les droit d’y écrire !) :

sudo mkdir /etc/mongrel_cluster

Ensuite placez dans le répertoire /etc/mongrel_cluster les fichiers de configuration des applications en utilisant les options requises. Par exemple pour une application gérée par l’utilisateur test (avec toutes les options indispensables) :

sudo mongrel_rails cluster::configure -e production
-p 8000 -N 3 -c /home/test/mon_appli
--user test --group test
--config /etc/mongrel_cluster/test_mon_appli.yml

Entrons dans le vif du sujet : le script de démarrage (et d’arrêt). Consultez le script suivant et faites un copier/coller dans un nouveau fichier mongrel_all_cluster.rb dans /etc/init.d . Reste à permettre son utilisation au démarrage et à l’arrêt de la machine :

sudo chmod +x /etc/init.d/mongrel_all_cluster.rb
sudo /usr/sbin/update-rc.d mongrel_all_cluster.rb defaults

Et voilà, c’est fini, il ne reste plus qu’à tester.

Pour ajouter une application il suffit d’utiliser la commande de création d’un fichier de configuration comme illustré ci-dessus. Pour neutraliser une application il suffit de déplacer le fichier de configuration (ou l’effacer), ou plus simplement de le renommer temporairement car seuls les fichier finissant par .yml sont pris en compte.

Comme indiqué en introduction, ce n’est pas suffisant pour prétendre faire une hébergement mutualisé. Mais cela permet déjà de mettre le paramétrage à l’abri et d’éviter des élévations de privilèges ou des morts violentes de processus. Il y aurait encore pas mal de chose à faire pour sécuriser le système et les applications elles-même.

Ce script et ce post sont le fruits d’une étude de ma part, ce n’est pas en production. N’hésitez pas à vous en inspirez, et si vous avez mieux à proposer (ou des remarques à apporter), la porte est grande ouverte ;)

Sam. Informatique

Installer Ruby et RoR sur Ubuntu 6.06 (Dapper)

18/07/2006

Alors que jusqu’à présent les paquets de Ubuntu (hérités de Debian) m’ont toujours semblé d’une grande simplicité et d’une efficacité redoutable, l’installation de Ruby ne se fait pas correctement. Rien de bien méchant comme vous allez le découvrir, mais cela demande un petit effort supplémentaire. Que ce soit pour utiliser simplement Ruby sur un serveur, ou Ruby on Rails dans un environnement graphique avec RadRails (non traité ici), ces explications seront très utiles.

Lire la suite…

Sam. Informatique , ,