Afficher le nombre de visiteurs sur son site internet avec Ruby on Rails

Ruby 3 Comments »

J’ai voulu trouver un moyen d’afficher le nombre de visiteurs qui naviguent sur un site Internet développé en Ruby on Rails. La seule solution que j’ai trouvé est de calculer le nombre de sessions créées par Rails. Mais pour cela, j’ai configuré mon application afin qu’elle stoque les informations de sessions dans ma base de données.

Voici donc ce qu’il faut ajouter dans environment.rb :
[ruby]
Rails::Initializer.run do |config|
config.action_controller.session_store = :active_record_store
# See Rails::Configuration for more options
end
[/ruby]

Ensuite il faut exécuter la commande rake suivante :
rake db:sessions:create
Cela va générer une migration que l’on va traiter comme cela :
rake db:migrate

Voila maintenant on se retrouve avec une table sessions dans notre base de données. Il suffit de créer le modèle Session (Créez juste le fichier session.rb dans app/models).
[ruby]
# Mon fichier session.rb
class Session < ActiveRecord::Base

end
[/ruby]

Passons maintenant à l'affichage du nombre de visiteurs sur votre site.
Nous allons créer un helper que nous allons mettre dans application_helpers.rb.
[ruby]
def get_visitors(from)
Session.count(:conditions=>["updated_at>?", from])
end
[/ruby]
Cette fonction prend en argument une date. Vous pouvez utiliser les helpers ruby tel que 5.hours.ago ou 5.minutes.ago, etc … La table session a donc un champs updated_at à chaque fois que l’internaute affiche une page.

Maintenant passons à la vue. Je vais intégrer le helper directement dans le layout principal du site.
Là rien de bien compliqué, il suffit juste d’exécuter le helper.
<%= pluralize(get_visitors(5.minutes.ago),"visiteur" %>

Voila, maintenant le nombre (approximatif) de visiteurs s’affiche sur votre site. Notez que je n’ai pas utilisé de cache pour optimiser le résultat. Mais cela peut également se faire.

Contrer le spam de façon simple pour vos commentaires

Ruby, Web No Comments »

En ce beau jour de dimanche 25 Novembre ( jour de mes 31 ans ) je vais vous expliquer comment protéger les commentaires de votre blog et ainsi éviter de recevoir du spam pour des produits pharmaceutiques douteux.

Cette méthode n’a rien de révolutionnaire mais semble marcher pas trop mal sur les sites que j’ai testé.

1) Ne pas accepter de liens dans les commentaires

Cela peux paraître idiot, mais la pluspart des robots essayent de mettre des liens vers des sites externes plus ou moins recommendables.

2) Utiliser la méthode du « input type=’hidden’… » lui même en commentaire.

Je ne sais pas pourquoi mais les robots veulent vous soumettre tous les champs de votre formulaire… Même si celui ci est en commentaire. Du coup, il devient aisé de détecter si c’est un robot qui soumet le formulaire ou pas.

Voici un exemple en Ruby on Rails :

Dans ma vue voici ce que j’ai : Attention j’utilise #haml pour mes vues
- form_tag :controller=>"documents", :action=>"add_comment", :id=>@article do
/ = hidden_field_tag "plip", "plop"
... Suite de votre formulaire

Pour info, et pour les personnes n’utilisant pas #haml, voici le code html généré :
[html]


[/html]

Et voici dans mon controlleur comment j’élimine les robots
[ruby]
def add_comment
unless params[:plip] # Si le champs « plip » n’a pas été soumis alors on traite le formulaire
c = Comment.new
c.document_id = params[:id]
c.client_id = session[:userid]
c.texte = params[:commentaire][:texte]
if c.client_id != nil
c.save
else
# Si la personne n’est pas authentifiée, on interdi les liens types http=// et autres [url] …
c.save unless c.texte =~ /http:\/\// or c.texte =~ /\[url\]/ or c.texte =~ /https:\/\//
end
end
redirect_to :action=> »show_article », :id=>params[:id]
end
[/ruby]

Voilà avec ce bout de code, je n’ai pas eu plus de 3 spams qui sont passé à travers depuis 6 mois sur un site qui a environ 3000 personnes par jour en moyenne.

acts_as_taggable_on_steroids et will_paginate

Ruby 4 Comments »

J’ai essayé de faire fonctionner acts_as_taggable_on_steroids et will_paginate, deux plugins Ruby on Rails ensemble.

acts_as_taggable_on_steroids permet comme son nom le laisse indiquer, un système de tags pour vos modèles et will_paginate permet la pagination de vos modèles. Seulement voilà, comment paginer un find_tagged_with ? Voici la solution.

Vous trouverez sur le site de Stoneage un tutoriel pour installer acts_as_taggable_on_steroids.

Pour l’installation de will_paginate, reportez vous sur le site de l’auteur du plugin : Errtheblog.
Read the rest of this entry »

Utilisez ActiveRecord sans Rails

Ruby No Comments »

Si vous êtes comme moi, que Ruby est devenu votre langage n°1 pour coder tout ce qui bouge, vous serez heureux d’apprendre qu’il est possible d’utiliser ActiveRecord sans Rails.

Pour cela il suffit simplement d’ajouter ces deux lignes en haut de votre programme :
require 'rubygems'
require 'active_record'

Pour configurer la connexion à la base de données :
ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:database => 'db_name',
:username => 'user',
:password => 'password',
:host => 'localhost')

Ensuite, il suffit de créer les classes dérivées de ActiveRecord (comme les modèles dans Rails) :
class User < ActiveRecord::Base
end

Vous pouvez donc maintenant utiliser ActiveRecord dans vos scripts.

Exemple :

require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:database => 'db_name',
:username => 'user',
:password => 'password',
:host => 'localhost')

class User < ActiveRecord::Base
end

# Exemple fictif
users = User.find_all_by_tag("SoliSoft")
users.each do |user|
user.cool += 1
user.save
end

# Et voila ...

Eternity ii : Impossible à résoudre ?

Bloc Note 8 Comments »

Je viens de lancer un test pour le jeu eternity ii. J’ai écris un petit programme en ruby qui permet de calculer le nombre de combinaisons possibles pour faire un premier carré de 4×4 en haut à gauche. Donc il y a un bord en haut et à gauche.

Mon petit programme qui tourne à environ 15000 pièces/secondes m’a trouvé pour le moment 135000 positions (valides) différentes pour le départ de 4×4… selon mes calculs, ca devrait dépasser le million (aisément).

Donc mis à part un gros coup de chance… je ne pense pas que le puzzle soit solutionnable par la programmation…

Il est toujours plaisant de se creuser la tête cela dit ! Si jamais je trouve la solution, je vous le dirai !

YAML : Framework css

Web No Comments »

Il existe plusieurs frameworks CSS dont blueprint CSS. Je viens de découvrir YAML. Yaml est un framework CSS qui semble pormetteur. Un framework CSS vous permet de créer des sites sans tableaux pour la mise en page, ne pas vous soucier de la compatibilité des navigateurs et générer du code HTML valide.

yaml nouveau framework CSS

Vous allez me dire pourquoi utiliser tel ou tel framework ? Personnellement j’utilise blueprint, mais je dois avouer que le yaml builder m’a particulierement séduit. Il vous permet en quelques clics de générer le squelette de votre site internet. Il ne vous restera qu’à modifier votre feuille de style pour y donner un look digne de ce nom !

» YAML Builder

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