Quelques photos

Consultant Ruby on Rails pour Direct Interactive - NYC

Ruby on Rails, SoliSoft 2 Commentaires »

Direct Interactive

Cela fait maintenant plusieurs mois que je travaille pour la société Direct Interactive située à Manhattan, NYC. Je suis donc consultant en développement Ruby on Rails pour cette entreprise.

Depuis quelques jours j’ai signé mon premier contrat avec eux, ce qui officialise notre collaboration.

Je tiens vraiment à remercier toute l’équipe de Direct Interactive pour leur accueil lors de notre visite, moi et ma petite famille, à NYC. J’y ai rencontré des personnes passionnées et qui donnent vraiment envie de se démener à 200%.

Direct Interactive est spécialisée dans l’expérience utilisateur. Leur logiciel ChiliSales est un produit unique en son genre.

Pour info, voici où ils se situent : Google maps

Donc voilà … Champagne :)

Capistrano Multi-Stage et Git

Bloc Note, Capistrano, Ruby on Rails Pas de Commentaire »

Je suis passé à Git pour ma gestion de révision de fichiers en abandonnant peu à peu SVN. Je vous le conseille fortement d’ailleurs… La gestion des branches est beaucoup plus facile et intuitive que SVN.

Pour mes projets Rails j’ai besoin au minimum d’avoir 2 branches : Une pour ma version de production et une pour ma version de développement.

Ma version de développement sera dans une branche dev, et ma version de prod dans master.

Mais voilà… pour pouvoir déployer ma version de dev il faut que la branche se situe également sur le serveur et pas seulement en local sur ma machine.

La solution est de créer une remote branche :
$ git push origin origin:refs/heads/dev
$ git fetch
$ git branch -r

Voilà, notre branche a été créé sur le dépôt.

Maintenant créons une branche en local qui permet de travailler directement sur la remote branch précédemment créée :
$ git checkout --track -b dev origin/dev

Nous voilà donc avec 2 branches.

Note : Pour pouvoir fair un push de ma branche dev, un simple git push ne semble pas fonctionner lorsque l’on est dans la branche dev. Je fais donc :
$ git push origin dev

Déploiement

Nous allons utiliser le plugin capistrano-ext :
gem install capistrano-ext

voici mon deploy.rb se situant dans config/
set :stages, %w(prod dev)
set :default_stage, “dev”
require ‘capistrano/ext/multistage’
require ‘mongrel_cluster/recipes’
default_run_options[:pty] = true

Je vais créer le dossier config/deploy/ dans lequel se situera mes fichiers dev.rb et prod.rb

Me voilà donc prêt à déployer mes applications
$ cap dev deploy:setup
// Paramétrages des fichiers de config database.yml et mongrel_cluster_(dev)(prod).yml
$ cap dev deploy:cold
$ cap dev deploy (pour le déploiement normal)

Pour déployer la version en production, rien de plus simple :
$ cap prod deploy:setup
$ cap prod deploy:cold
$ cap prod deploy (pour le déploiement normal)

Il m’est maintenant plus aisé d’avoir ma version stable et de développement. Lorsque ma version de développement est validée, je la merge dans mon master :
(master) $ git merge dev

Rails 2.1

Ruby, Ruby on Rails 3 Commentaires »

La dernière version du fameux framework Ruby on Rails est sortit avec son lot de nouveautées (source linuxfr):

  • Gestion des fuseaux horaires:
    Cela permet plus facilement à une application de personnaliser par utilisateur le fuseau horaire des enregistrements en base. Pour cela il suffit de sauvegarder les enregistrements en UTC (Temps universel coordonné) et une variable globale à l’application “Time.zone” change à la volée le fuseau horaire lors de l’affichage des variables.
  • Dirty Tracking (mis à jour partielle):
    ActiveRecord subit une évolution importante et remarquée, on peut enfin détecter les changements d’un modèle lors d’une mise à jour (par un formulaire par exemple). Cela permet de connaître facilement dans le code l’ancienne et la nouvelle valeur d’un champ précis seulement si celui-ci a changé et n’est pas encore sauvegardé.
  • Périmètre nommé (named scope):
    Sans doute LA grosse nouveauté de cette version, la fonction recherche (select) d’ActiveRecord devient extensible à l’infini. C’est en fait le plugin has_finder qui est inclus dans ActiveRecord et permet de définir des méthodes qui ajoutent à la volée des conditions à la requête SQL générée, avec possibilité de les imbriquer.
    Un exemple vaut mieux qu’un long discours:
    class User < ActiveRecord::Base
    named_scope :active, :conditions => {:active => true}
    named_scope :inactive, :conditions => {:active => false}
    named_scope :recent, lambda { { :conditions => [’created_at > ?’, 1.week.ago] } }
    end
    # Usage standard
    User.active # pareil que User.find(:all, :conditions => {:active => true})
    User.inactive # pareil que User.find(:all, :conditions => {:active => false})
    User.recent # pareil que User.find(:all, :conditions => [’created_at > ?’, 1.week.ago])
    # Imbrication possible
    User.active.recent
    # pareil que:
    # User.with_scope(:conditions => {:active => true}) do
    # User.find(:all, :conditions => [’created_at > ?’, 1.week.ago])
    # end
  • Migrations basée sur une référence temporelle:
    En travail collaboratif, la gestion des migrations (script qui permet de faire évoluer le schéma de la base en ajoutant/modifiant/supprimant table, colonne, index, …) avec un compteur incrémenté devenait rapidement un calvaire: si 2 personnes faisait une migration avant leur prochain commit, les migrations avaient le même numéro. Maintenant, un timestamp (référence temporelle) est utilisée pour le nommage des migrations afin d’éviter toute “collision”.
  • Dépendances des Gem (paquets ruby):
    On peut maintenant configurer la liste des paquets Gem requis pour l’application avec une version exacte ou minimale requise. Une nouvelle tâche à la commande “rake” permet d’installer les paquets manquants ou de les mettre à jour si besoin:
    rake gems:install
  • Meilleure mise en cache:
    C’est essentiellement la flexibilité de la mise en cache qui a été améliorée, on peut dorénavant facilement implémenter une nouvelle classe de gestion de cache personnalisée et l’utiliser dans les vues.

Comme toujours pour l’installer :
gem install rails

Bref que du bien :)

Ruby on Rails : Besoin d’acheter un Mac ?

Logiciel, Matériel, Ruby on Rails 10 Commentaires »

Je suis un peu surpris finalement par la communauté Ruby on Rails qui semble s’orienter sur Mac pour leurs machines de développement.

Je suis assez tenté moi aussi par un tel achat ! Mais est-ce que Ruby on Rails justifie cet achat (impulsif) ? Je ne pense pas.

Je travaille sous GNU/Linux depuis quelques années. J’ai pris mes habitudes, mes repères … Pour le développement, j’utilise à l’instar du célèbre texmate, gedit (avec quelques plugins bien sûr). Je suis passé sous ubuntu depuis quelques temps … Oui moi, fervent utilisateur de KDE … J’ai pas pu attendre KDE 4.1 et ai finalement choisi gnome pour un peu de dépaysement.

Alors si je suis content de mon OS pourquoi vouloir changer ? Et bien effectivement, ca ne serait pas pour gagner en productivité pour le développement Ruby on Rails, mais bien pour avoir une machine bien conçue et silencieuse (je penche pour un iMac 24″).

Donc à bien y réfléchir, cela serait principalement par envie de connaître un nouvel OS, qui me permettrai de faire des choses comme de la musique (composition) et de la vidéo (films familliaux) et accessoirement, travailler :) .

Je me laisse encore 1 ou 2 mois de réflexion… n’hésitez pas à me donner votre sentiment à ce sujet…

Pour info, voici à quoi ressemble un bureau sous linux (pour ceux qui ne l’ont jamais vus — si si, ca existe –)

Mon bureau taillé sur mesure pour le développement Ruby on Rails

Ouverture en beta test de batitelweb.com

Ruby on Rails, SoliSoft, web2.0 Pas de Commentaire »

Depuis maintenant quelques mois, je travaille sur le projet batitelweb qui est un service permettant aux artisans, particuliers, architectes, etc… de créer facilement des devis en ligne et de disposer d’une bibliothèque de prix la plus complète de sa catégorie.

Nous ouvrons aujourd’hui les ouvertures aux bétas testeurs (200 environ) donc si vous êtes intéressés, n’hésitez pas !

Le projet a bien entendu été réalisé en Ruby on Rails …

image_science et freeBSD

Ruby, freeBSD Pas de Commentaire »

En ce doux moi de Mars, j’ai voulu mettre image_science sur ma freeBSD. Et là horreur !! J’avais un problème de bibliothèque non trouvée !

Alors si comme moi vous vous retrouvez avec l’erreur suivante :

/usr/bin/ld: cannot find -lfreeimage

Il suffit de mettre dans le fichier image_science.rb (chez moi vi /usr/local/lib/ruby/gems/1.8/gems/image_science-1.1.3/lib/image_science.rb
) la ligne suivante

builder.add_link_flags "-L/usr/local/lib"

au dessus de celle ci :

builder.add_link_flags "-lfreeimage"

Et vous voila avec image_science fonctionnel sur votre freeBSD (ouf!)

Comment trier vos Hash

Bloc Note, Ruby Pas de Commentaire »

Par défaut les Hash en ruby sont non triés ! Cela peut être génant lorsque l'on veut justement qu'ils le soient ! Heureusement il existe un gem qui permet d'avoir ce comportement !

http://collections.rubyforge.org/

Pour l'installer rien de plus simple :

gem install collections

Ensuite rien de bien compliqué non plus !

RUBY:
  1. require 'rubygems'
  2. require 'collections'
  3. # or
  4. require 'collections/sequenced_hash'
  5. hash = SequencedHash.new
  6. hash[:v1] = "v1"
  7. hash[:v2] = "v2"
  8. hash[:v3] = "v3"
  9. hash.inspect # =&gt; {:v1=&gt;"v1", :v2=&gt;"v2", :v3=&gt;"v3"}
  10. hash.at(0) # =&gt; "v1"
  11. hash.at(1) # =&gt; "v2"

Quoi de neuf pour SoliSoft ?

SoliSoft 10 Commentaires »

SoliSoft est en pleine phase de restructuration... Grace à Ruby et Ruby on Rails, nous avons pu multiplier les contact professionels. Cela va nous permettre de faire ce dont on souhaitait depuis le début : Créer un studio de développement.

Pour le moment, cela sera un studio "virtuel" car les acteurs de ce studios son gérant ou freelance et travailleront de leurs bureaux ou domicile. Avec les moyens de communications modernes cela n'est plus un obstacle. Skype, basecamp et svn vont devenir nos outils préférés !

Nous vous expliquerons plus en détail dans un nouveau billet les détails de tout ceci.

Notre volontée est de rassembler les compétences pour offrir à nos clients un temps de réalisation en corrélation avec leurs attentes. De plus le fais de travailler en équipe va nous permettre de mutualiser nos connaissances et notre savoir faire. Nous prévoyons également de travailler sur des projets en interne... on déborde d'idées.

Quelques News de Ruby et Ruby on Rails

Ruby, Ruby on Rails Pas de Commentaire »

Rubular vous propose de tester vos expressions régulières en ligne pour le langage Ruby ! Cela peut être assez pratique pour des recherches complexes dans le texte.

Thin vient de sortir en sa version 0.6.2 corrigeant au passage des bugs génants de consommation de CPU.

#Haml est lui aussi mis à jour et passe en 1.8.1. Ses performances dépassent ERB en dehors de Rails. Cela laisse présager que du bon pour les futures versions (quoi vous n'utilisez pas #haml ?? :) )

Ruby 1.9 est là aussi...

Working with Rails se fait spammer par pas mal de sociétés/sites ... donc si vous tombez sur un site qui n'a rien à voir avec Rails, soumettez un "Report". Ils effacent les petits malins dans l'heure :)

Fréquentation et pagerank google

Référencement 3 Commentaires »

Etrangement mon blog SoliSoft.net a un pagerank de 5, cela n'est pas énorme mais n'est pas si mauvais non plus. Et pourtant, le site culmine à une fréquentation de l'ordre de 21 visiteurs/jour. Ok bien sûr ce blog ne traite que de développement Ruby, donc une niche vu l'envol qu'a cette technologie en France :/ ...

Peut être devrais-je traiter de sujets plus vagues et parler de référencement, de Web2.0 et de tous ces services Web qui nous changent la vie (enfin de certains).

Cela dit, Rally-News.fr qui a un pagerank de 4, lui culmine à 15000 visiteurs/jour... Comme quoi, cela n'est pas lié :)

Lien sur ce qu'est le pagerank : http://unearaigneeauplafond.fr/comprendre-le-pagerank

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Log in