Développement Web Ruby
par Sylvain CLAUDEL

Derniers posts

jQuery Highlight : Mettez vos résutats de recherche en évidence !

Date d'édition 2013-02-26 à 15:07

Il existe un plugin jQuery pour mettre en évidence une chaîne de caractères dans un paragraphe.

Voici le résultat :

Attention ce code est particulièrement compliqué :-) :

$("#id-mon-element").highlight("soleil");

id-mon-element étant l'id du conteneur dans lequel le texte "soleil" pourra être mis en évidence. Si vous souhaitez le faire sur toute la page :

$("body").highlight("soleil");

Source et téléchargement : https://johannburkard.de/blog/programming/javascript/highlight-javascript-text-higlighting-jquery-plugin.html

Sunspot : la recherche simple pour une application rubyonrails avec Solr

Date d'édition 2013-01-17 à 10:08

J'avais déjà parlé de UltraSphinx et ThinkingSphinx. Il y a mieux (enfin je trouve) : SunSpot qui utilise Solr.

Pour l'utiliser il suffit de mettre ces gems dans votre Gemfile et de faire un bundle install

Dans votre model, mettez les champs à indexer et dans une before_save réindexez le tout :

class Post < ActiveRecord::Base
  before_save :reindex
  searchable do
    text :title, :body
    #... autres champs à indexer
  end
  def reindex
    Sunspot.index self
    Sunspot.commit
  end
end

Pour faire la recherche, par exemple dans votre controleur :

# OU Post.solr_search do / Post.search do
@posts = Sunspot.search(Post) do
  fulltext(params[:query]) # params[:query] est une chaine
end.results

Il existe aussi une tâche rake pour lancer solr et pour tout réindexer : 

rake sunspot:solr:run

rake sunspot:reindex 

Personnellement je trouve ça très efficace et très rapide ! 

Documentation complémentaire : 

https://collectiveidea.com/blog/archives/2011/03/08/full-text-searching-with-solr-and-sunspot/ 

https://sunspot.github.com/

Relancer une migration spécifique sur une application rubyonrails

Date d'édition 2013-01-15 à 14:18

Relancer une migration spécifique sur une application rubyonrails est possible.

Pensez d'abord à "rollbacker" la migration (identifiée par son numéro == date) si elle avait été migré mais qu'elle contient des erreurs :

rake db:migrate:down VERSION=201XXXXXXXXXXXXXX

Puis relancez-là : 

rake db:migrate:up VERSION=201XXXXXXXXXXXXXX

Cela ne pas toucher aux migrations intermédiaires. D'une manière générale vous devriez ajouter une nouvelle migration qui change la structure de la base. Mais ces tâches rake peuvent être très utile.

Installer RMagick la solution ultime

Date d'édition 2013-01-07 à 09:53

Bon j'ai déjà fait pas mal de post sur le sujet voici la méthode qui marche (sur ubuntu / debian)

sudo apt-get install libmagickwand-dev

sudo gem install rmagick -v '2.13.1'

Si ça ne marche pas (la solution ultime)

Oui c'est pas simple ! Sinon la méthode préconisé sur le site d'Rmagick fonctionne bien faut juste trouver la page : https://rmagick.rubyforge.org/install2-linux.html

1) Installer les outils de compilation

sudo aptitude install build-essential

2) Installer les bibliothèques de dev de jpeg et png et d'autre si besoin

sudo aptitude install libjpeg-dev libpng-dev

3) Télécharger et compiler imagemagick (cette version fonctionne : ImageMagick-6.5.5-10)

wget ftp://mirror.checkdomain.de/imagemagick/legacy/ImageMagick-6.5.5-10.tar.gz

tar xvzf ImageMagick-6.5.5-10.tar.gz

cd ImageMagick-6.5.5-10

./configure --disable-static --with-modules --without-perl \

--without-magick-plus-plus --with-quantum-depth=8 \

--with-gs-font-dir=$FONTS

make

sudo make install

Ensuite vous pouvez installer rmagick

sudo gem install rmagick -v '2.13.1'

Cette seconde méthode est celle que j'utilise quand la première ne fonctionne pas.

Pendule : l'histoire du réglage d'un bug sur une extension chrome

Date d'édition 2012-12-12 à 18:11

Si vous faites du développement web front (intégration) vous connaissez certainement l'extension Pendule qui permet de faire tout un tas de chose. Je m'en sers principalement pour son colorpicker. Depuis quelques versions de Chrome le colorpicker est cassé. Je me suis mis à l'oeuvre pour régler le bug.

Voici comment procéder : aller dans le menu de Google Chrome -> Outils -> Extensions

Il faut activer le mode développeur ainsi les ID des extensions deviennent visible. En l'occurence Pendule : gbkffbkamcejhkcaocmkdeiiccpmjfdi

Ensuite vous allez dans votre home/{USER}/.config/google-chrome/Default/Extensions/{ID-EXTENSION}

Ici vous avez les sources de l'extension. Pas de chance pour moi le dev à minifié le js dans le fichier "content_script_top_frame.js". J'ai donc copier les sources ici pour les indenter : https://jsbeautifier.org/, et je me suis mis à chercher le problème avec le ColorPicker. J'ai trouvé à la ligne 579. En fait la directive css "!important" empêche l'affichage de la background-color. Donc j'ai viré "!important" et ça marche (entre chaque modification de fichier il faut relancer Chrome).

Et voilà un bug de réglé ! Je problème c'est de trouver comment contacter l'auteur !

Développement ruby et geekeries - rivsc