Développement Web Ruby
par Sylvain CLAUDEL

Derniers posts

Lazyload un plugin jQuery pour différer le chargement des images dans l'ordre de visibilité

Date d'édition 2010-12-17 à 13:04

Voici un plugin jQuery Lazyload, ce plugin permet de charger les images dans l'ordre visible d'apparition. Ainsi les images du bas de votre site ne s'afficheront que lorsque le scroll atteindra ces images.

Lien vers le plugin :

https://www.appelsiini.net/projects/lazyload

Demo :

https://www.appelsiini.net/projects/lazyload/enabled.html

Issu de la page du plugin :

Dans la balise <head>


<script src="jquery.js" type="text/javascript"></script>
<script src="jquery.lazyload.js" type="text/javascript"></script>
Activation du plugin :

<script type="text/javascript"> $("img").lazyload(); </script>

Tutorial Rubyonrails 3 - Partie 4 - ActiveRelation et scopes - Arel

Date d'édition 2010-12-14 à 11:53

Partie 4 – Rails3 -  ActiveRelation et scopes

N’hésitez à mettre des commentaires / à corriger mes fautes / à rajouter des choses !

Vous avez vu dans la partie 2 :

post = Post.where(:title => ’Mon titre’).first

Il existe de nombreux scopes ActiveRelation :

joins
limit
order
includes
where
offset

Vous aurez remarqué que ces termes ressemblent à SQL....

Donc si vous souhaitez trouver les 10 derniers commentaires visibles du post d’id 3, trié par ordre de création décroissant et qui contiennent la lettre ‘a’ dans leur contenu (l’exemple est volontairement compliqué pour que vous puissiez voir un aperçu assez complet):

comments = Comment.where(:post_id =>  3, :visible => true).where("content LIKE ?", "%a%").order(‘created_at DESC’).limit(10).all

Vous avez remarqué ce champ que j’utilise et qui apparait comme ça : created_at . Il s’agit de la date/heure de la création de l’objet. Rails l’ajoute par défaut dans la migration (ainsi que updated_at : date/heure de la dernière modification), ces champs m’ont toujours servi d’une manière ou d’une autre.
Vous noterez aussi que l'on peut chainer les scopes where.

Vous pouvez créer vos propres scopes et ils se définissent dans les models.
Par exemple si vous souhaitez filtrer les commentaires par visible :
Dans le model Comment :

class Comment < ActiveRecord::Base
 #Remarquez le singulier
 belongs_to :post
 belongs_to :reader

 scope :visible, where(:visible => true)
end

La syntaxe est :

scope :nom_du_scope, where(...).order....

Vous pouvez maintenant utiliser votre scope :

comments = Comment.where(:post_id =>  3).visible.order(‘created_at DESC’).limit(10).all

Quand vous voulez recupérer des enregistrements vous devez faire .all à la fin de l’ActiveRelation ou .first si vous ne souhaitez qu’un élément.

C’est un avantage (qui n’existait pas dans rails 2), du coup vous pouvez garder des ActiveRelations et continuer de chainer les conditions (d’un point de vue technique la requête SQL n’est executé que lorsque l’on appelle .all, .each, .length ou .first sur l’ActiveRelation):

Vous pouvez tester le chainage des scopes en console (rails c) :

ar = Comment.where(:post_id =>  3)
ar.length
ar = ar.visible
ar.length
ar = ar.order(‘created_at DESC’)
ar.length
ar = ar.limit(10)

Un peu de lecture:https://guides.rubyonrails.org/active_record_querying.html

Prochainement Partie 5 – Controller, actions

Free la nouvelle freebox v6 dévoilée

Date d'édition 2010-12-14 à 09:21

Au menu un processeur Atom, 250 Go, téléchargements autonomes, télécommande avec gyroscope et accéléromêtre. Nouvelle interface simple et intuitive. Manipulation des box via iPhone iPad (lancement de téléchargements), et BLURAY DVD !!!

Le prix reste à 29,99€, des jeux entre la PS3 et la WII.

Et d'autre news !

Pour suivre en live la conférence : 

https://www.ustream.tv/channel/freeboxlive

PassengerPreStart sur Nginx + Phusion Passenger 3, pré-chargement des applications rubyonrails

Date d'édition 2010-12-13 à 09:59

Depuis passenger 3, il existe une directive qui permet de dire à nginx de faire une requête sur le serveur spécifié au démarrage d'nginx.

Du coup l'application se pré-charge pour que la première requête utilisateur (ou d'un moteur de recherche) ne prenne pas 3 heures, elle s'appelle passenger_pre_start :

server {

  listen 80;

  server_name foo.com;

  root /webapps/foo/public;

  passenger_enabled on;

}

server {

  listen 3500;

  server_name bar.com;

  root /webapps/bar/public;

  passenger_enabled on;

}

passenger_pre_start https://foo.com/; # <--- added

passenger_pre_start https://bar.com:3500/; # <--- added

Le problème en gros c'est que les instances de rails se mettent en veille quand elles ne sont plus utilisées (PassengerPoolIdleTime). Pour palier à ceci il existe la variable passenger_min_instances qui correspond au nombre minimum d'instances que passenger ne doit pas clean-upé (ah bon c'est pas français :-) ) :

server { 

 listen 80;

 server_name foo.com;

 root /webapps/foo/public;

 passenger_enabled on; 

 passenger_min_instances 1; # <--- added 

}

Voilà comme ça vos applications rails 3 sont toujours au top niveau premier chargement !

jQuery tools

Date d'édition 2010-12-10 à 11:01

jQuery Tools est un plugin qui possède de nombreuses fonctionnalités (en plus il est léger).

Quelques fonctionnalités :

- Tabs (onglets)

- Tooltips (bulle d'aide)

- Overlay (lightbox, fancybox)

- Scrollable (div avec ascenseur html, css, js)

- Date Input (Champs date)

- Range Input (Champs range)

- JS form validator (Validation de formulaire coté client)

Page d'accueil

https://flowplayer.org/tools/index.html

Demo

https://flowplayer.org/tools/demos/index.html

Je crois que ça vaut vraiment le coup !

Développement ruby et geekeries - rivsc