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.

Recent Comments