juil 09
Voici comment ajouter un module de recherche pour vos modèles MongoMapper.
Comment l’utiliser :
VotreModele.search("champ1, champ2", "mots, recherchés")
Vous pouvez spécifier des conditions et des options
VotreModele.search("champ1, champ2", "mots, recherchés", { :valid => true }, { :limit => 10 })
En espérant que cela puisse aider …
déc 08
Cela fait un petit moment que je n’ai plus écrit … Le problème de travailler seul est que les journées sont bien trop courtes pour bloguer. Enfin, ce matin je vais essayer de vous informer des prochaines avancées et projets.
soliMAP
soliMAP avance bien, sont référencement bat son plein, nous espérons de plus en plus de visiteurs dans les prochains mois. Nous avons été sélectionné pour la startup academy !
soliCMS
Le CMS avance lui aussi (un peu moins vite) car la plupart des fonctionnalités que nous souhaitions sont présentes. Nous avons déjà quelques sites en production utilisant l’outil. Nous allons prochainement mettre en ligne le site présentant le CMS.
Voici les sites qui utilisent le CMS :
http://palavaslesflots.com http://elixir-groupevocal.com http://kaloustian.gr http://sicass.com http://msl-stores.com http://sermibat.com
soliPM
Que dire de soliPM mis à part que ce sera un mini basecampHQ en Français (multi-langues plus tard). Mais le projet utilise mongoDB et RoR, ce qui me permettra de « scaler » les yeux fermer !
Là aussi tout est à faire, le site, les tutoriels, etc …
avr 02
J’ai eu à travailler avec l’API de Paypal. J’avais tout d’abord essayé de chercher un plugin ou un gem qui me permettrait de faire facilement ce dont j’avais besoin. Finalement, j’ai créé mon premier gem. C’est pratique et celà peut servir à d’autres développeurs.
Vous trouverez toutes les infos ainsi que le code source à l’adresse suivante :
http://github.com/solisoft/paypal_nvp/tree/master
juil 24
Je dois l’avouer Ruby on Rails est un pur bonheur mais des fois surdimentionné par rapport aux besoins. Grâce à RubyInside j’ai découvert un petit framework tout léger nommé Sinatra !
gem install sinatra
Je ne vais pas vous paraphraser ce que vous allez lire comme informations sur le site officiel mais ce mini framework est vraiment bien pensé. Par défaut il est Restful, on peut également avoir du MVC si on le souhaite et on a le choix dans l’ORM. Par exemple il est possible de le coupler avec DataMapper en lieu et place d’ActiveRecord.
Pour les vues, #haml est de la partie !
La chose qu’il me reste à voir est comment héberger un site fonctionnant avec Sinatra …
juin 05
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
mar 17
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!)
mar 17
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]
require ‘rubygems’
require ‘collections’
# or
require ‘collections/sequenced_hash’
hash = SequencedHash.new
hash[:v1] = « v1″
hash[:v2] = « v2″
hash[:v3] = « v3″
hash.inspect # => {:v1=> »v1″, :v2=> »v2″, :v3=> »v3″}
hash.at(0) # => « v1″
hash.at(1) # => « v2″
[/ruby]
jan 30
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
jan 27
Pour ceux qui suivent l’actualité Rails, cela ne doit pas être tout frais. Mais j’y suis tombé dessus il n’y a pas si longtemps.
Il existe une alternative au serveur mongrel pour vos applications Rails. Thin.
Thin est un nouveau serveur/démon en Ruby écrit par Marc-André Cournoyer qui utilise EvenMachine, Rack et les librairies Mongrel. Il est plus rapide que Mongrel et supporte mieux la charge.
Il ne s’agit pas encore d’une version finale, et n’est pas conseillé en production. Cela dit, Thin semble suffisament stable tout de même. On utilise bien Nginx qui lui aussi n’est pas encore en version 1.0 et tout fonctionne bien.
Nous allons tester ce nouveau serveur sur quelques applications. Si il permet de mieux gérer le stress des serveurs Rails cela ne peut être que bénéfique !
jan 14
Je l’avoue, je passe beaucoup de temps devant mon PC. Mais pour arriver à être serein pendant que je n’y suis pas devant, je me suis mis en place un système de notification pour les évennements importants (Nouvelle commande, nouveau contact, etc…). Et en plus, cela ne me coûte absolument rien (mis à part le prix d’un SMS en Angleterre au départ).
Comment je fais ? C’est trés simple ! J’utilise Twitter !!
Read the rest of this entry »
Recent Comments