Archive

Articles taggués ‘ruby’

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 , ,

Ubuntu 8.04 et Ruby Enterprise Edition

21/02/2010

Bien qu’utilisant Passenger depuis un moment en production, je n’avais jamais testé Ruby Enterprise Edition (REE). L’envie était là, mais pas le besoin, la version standard de Ruby packagée avec les distributions Linux étant largement suffisante dans bien des cas.

Cette option peut devenir intéressante pour utiliser Ruby 1.8.7 sur Ubuntu LTS 8.04. Ce n’est pas la seule option, mais ça peut être l’occasion de faire d’une pierre deux coups en bénéficiant des apports de REE. Cette version d’Ubuntu sera encore maintenue pendant 3 ans, migrer vers la prochaine LTS (à venir) uniquement pour mettre à niveau la version de Ruby peut-être une opération lourde (selon le contexte) qu’il est possible d’éviter à court terme.

Pourquoi remplacer Ruby 1.8.6 par Ruby 1.8.7 ? Il peut-être souhaitable de ne pas avoir à valider ses développements sur plusieurs version même si le déploiement est effectuée sur des plateformes différentes. Une autre raison est qu’à court terme cette version risque d’être le minimum requis pour certains gems.

Lire la suite…

Sam. Informatique ,

Ruby et opérateurs : qui a la priorité ?

11/04/2008

Il y a un petit piège dans Ruby avec les opérateurs booléens utilisés conjointement avec une affectation. Le côté très intuitif du langage fini pas nous faire oublier quelques règles simples…

Dans une expression booléenne nil est considéré de la même manière que false. Ce qui amène quelquefois à utiliser une syntaxe du type :

machin or truc

Au lieu de (parmis d’autres solutions) :

if machin.nil?
# utiliser truc
else
# utiliser machin
end

Mais… il y a un piège. L’expression suivante ne se comporte absolument pas comme on pourrait le supposer :

toto = machin or truc # ca sent le bug ici

En fait l’opérateur d’affectation = a une priorité suppérieure à celle de l’opérateur or. Pour s’en convaincre il suffit de faire le test suivant avec l’interpréteur irb :

irb(main):001:0> toto = false or true
=> true
irb(main):002:0> toto
=> false

L’expression saisie est évaluée de la manière suivante : (toto = false) or true. Donc l’expression vaut bien true, mais la variable toto se voit affecté la valeur false.

Il y a deux solutions : soit utiliser des parenthèses, soit utiliser l’opérateur || qui a une priorité supérieure à celle de l’affectation :

# deux solutions correctes
toto = (machin or truc)
toto = machin || truc

Ca a l’air tout bête, une boulette de débutant allez-vous me dire… mais lorsque l’on ne connait pas correctement la priorité des opérateurs, ou que l’on est pas concentré, on fini par avoir quelques bugs par forcément évident à identifier.

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 , ,

Installer de multiples versions de Ruby

28/03/2007

Comment installer plusieurs versions de Ruby sur un même système ? On se lève quelquefois le matin avec des questions existentielles auquel il est impératif de répondre, ce sera celle du jour. Evidemment, on installe pas plusieurs versions de Ruby tout les jours. Toutefois sur un serveur devant héberger plusieurs sites, avec des versions différentes de Rails, il peut-être utile de mettre à jour chaque site l’un après l’autre pour minimiser les surprises en cas d’incompatibilité. Concrètement installer plusieurs versions de Ruby n’a rien de bien méchant, mais encore faut-il que chaque installation ai ses propres gems, que les chemins soient bons, etc…

Le processus d’installation est un remake de ce post qui contient les informations de bases pour compiler Ruby sur Ubuntu. Mais Ubuntu n’est pas indispensable, ce qui est décrit ici peut se transposer sur une autre distribution ;)

Lire la suite…

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 , ,

Compiler Ruby et RubyGems sur Ubuntu 6.06

10/11/2006

Bien qu’il soit possible d’installer Ruby sur Ubuntu 6.06 avec le gestionnaire de paquets, j’ai souhaité voir comment le faire en partant des sources. Si compiler Ruby en soit n’est pas un problème, il y a un petit piège au moment de compiler RubyGems. Mais comme je suis bon et généreux (qui a rigolé ?), je publie la procédure complète.

Lire la suite…

Sam. Informatique ,

Ruby in the sky with diamonds

11/10/2006

Le jeu de piste des liens entres blogs et news m’a amené à prendre connaissance de cet indicateur selon lequel Ruby serait grosso-modo le treizième langage du moment. Je vous laisse découvrir dans l’introduction ce que cette notion signifie.

Logo Ruby

Il est intéressant de constater la progression de Ruby dans ce classement, qui semble avoir multiplié par 3 à 4 son score en un an. A cette époque je n’avais moi-même jamais entendu parler de ce langage.

Nul doute que Rails y soit pour quelque chose, mais pour m’intéresser à Ruby indépendamment de RoR, je peux vous affirmer que ce langage mérite d’être connu et utilisé dans d’autres contextes que du développement web.

Il reste encore une grosse marge de progression, et il faudra du temps pour atteindre le niveau de Python dans ce classement, et plus encore pour concurrencer PHP sur son terrain. Mais le dynamisme de la communauté Ruby en général et les améliorations qu’apporterons les futures versions laissent penser que cela n’a rien d’impossible.

Ruby est un langage objet, dynamique, réputé très lisible (à raison). Ruby est également libre. Si des développeurs expérimentés peuvent réaliser des outils riches et complexes, il est également un langage très adapté à l’apprentissage de la programmation en générale, objet en particulier.

Pour ceux qui souhaitent en savoir plus :

Sam. Informatique

=== et commutativité

11/10/2006

Récemment j’ai perdu pas mal de temps sur une broutille en Ruby. J’étais en train d’écrire un petit programme utilisant la très pratique bibliothèque DBF, et je souhaitais gérer différents cas selon le type des champs. Chaque valeur d’un champs étant une instance d’une classe adaptée, j’ai rapidement pensé à utiliser case/when. Comme je débute, je démarre irb, je teste bêtement l’opérateur === et … ça ne fonctionne pas. Mince alors ! J’ai cherché dans les docs, google, …

Finalement tout est rentré dans l’ordre, je me suis posé la bonne question, mais n’ai pas fait le bon test : l’opérateur === n’est pas commutatif ! D’ailleurs ce n’est pas un opérateur, mais une méthode, pour être précis. Une fois que l’on a compris cela parait si simple, un truc idiot de débutant… (non pas en Ruby, mais en informatique). Mais voilà, ça arrive, surtout pour ceux qui ne sont pas réveillés au moment de se poser les bonnes questions ;)

Concrètement, lorsque ce code est utilisé (note aux blondes : ce n’est pas du basic, les numéros de lignes sont là pour faire joli) :

1	case mon_instance
2 		when String	: puts "chaine"
3		when Date	: puts "date"
4		else puts "autre chose"
5	end

Il faut bien comprendre que ce qui est exécuté est similaire à String===mon_instance , et non l’inverse. Exemple avec irb :

>> a=String.new
=> ""
>> a === String
=> false
>> String === a
=> true

C’est aussi simple que ça. Mais c’est mieux quand on y pense :)

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 , ,