Archive for the 'rails' Category

Site en plusieurs langues avec rails?

Monday, August 21st, 2006

Vous avez un site rails que vous désirez faire en multi-langues. Voici un plugin qui vous permettra d’avoir des fichiers de “views” et de “layout” différents. De plus le plugin redirigera l’utilisateur vers la langue de son navigateur (on peut configurer les langues avec un ordre de priorité que le plugin utilise).

Plus d’information vers http://penso.info/svn/rails/plugins/multi_lang/. Pour l’installation effectuez simplement un :

script/plugin install http://penso.info/svn/rails/plugins/multi_lang/

Le reste est dans le README. Le plugin marchera pour des sites existants, vous n’avez pas besoin de déplacer les fichiers immédiatement.

mise à jour on m’indique l’existance de ce plugin qui ferait la même chose (Ruby-GetText-Package). Je n’ai pas vérifié.


Tags: , , ,

auth_generator 2.0.1! générateur d’identification pour rails

Saturday, August 19th, 2006

Nouvelle version de mon plugin d’identification pour rails: 2.0.1. Dans la liste des changements, la possibilité d’avoir des thèmes pour les vos fichiers. Ca vous permettra de facilement modifier l’apparence. De plus le support de gravatar a été rajouté, vous n’aurez plus besoin d’avoir une librairie graphique pour la gestion des icones. Quelques bugs aussi.

New version of the auth_generator, an authentification generator for rails. Theme support and gravatar support have been added, as many bugfixes. Feedbacks welcome.


Tags: , ,

Les PDA, c’est pas encore ça!

Wednesday, August 16th, 2006

Pour les besoins d’un client je regarde ce qui est possible d’être fait du côté des PDA (iPAQ). Depuis le temps que je n’ai pas regardé et que j’ai fait des pages WAP et des pages PDA pour LinuxFr, je me dis que de l’eau a coulé et qu’on ça doit être super bien.

Bah non, c’est toujours pareil. Dans un iPAQ récent on a un Windows Mobile 5.0 (ouch), doté d’un IE limité (déjà que la version PC laisse à désirer). Mes petits bouts d’Ajax sous Rails ne fonctionnent pas, mais javascript est présent et il est possible d’utiliser la fameuse fonction qui permet de faire des requêtes HTTP. Enfin si c’est pour refaire la librairie Prototype… Il faut sans doute installer Opera pour Mobile

Ca me laisse un goût de “ce n’est vraiment pas encore prêt”. Enfin ça permet de voir qu’il est vraiment important d’utiliser des tailles en “em” et non “px” pour les CSS (les margin, padding, etc) pour éviter d’avoir un truc à chier sur un écran en 380×240 pixels de large.


Tags: , , ,

Mise à jour de rails

Thursday, August 10th, 2006

Et hop, une mise à jour de sécurité de rails dont on n’a pas encore de détails. Ca promet :) (Qui prend un peu de temps pour remonter dans l’historique subversion et nous donner la partie intéressante?

Bon, j’ai tout mis à jour.


Tags: ,

Rails, sans rails!

Saturday, June 24th, 2006

Alors voilà, vous avez un site développé sous “rails”:http://www.rubyonrails.org/ et vous avez besoin d’exécuter des scripts régulièrement. Vous avez donc besoin de vous connecter à la base de donnée, d’utiliser des modèles, etc. Voilà qui va vous changer la vie, la possibilité de faire ça plus rapidement (des bouts de code ont été pris sur usenet). L’exemple est dans le cas ou vous avez un modèle appelé “Zone”.

En gros, vous voilà à utiliser activerecord, sans rails.

#!/usr/bin/ruby
# Fabien Penso

# Debut des scripts pour ecrire les fichiers de configurations

dir = File.dirname __FILE__
# Put the root of the RAILS directory
railsroot = ‘../uucpssh-1.0′
# Set the mode (development / production)
databasemode = “development”

# We need activerecord
require ‘rubygems’
require_gem ‘activerecord’

# Load files from the models
$:.insert(0,”#{dir}”)
$:.insert(0,”#{dir}/#{railsroot}/app/models/”)
$:.insert(0,”#{dir}/#{railsroot}/app/helpers/”)

# Read database config via YAML
@dbs = YAML::load(ERB.new(IO.read(railsroot+’/config/database.yml’)).result)

curr_db = @dbs[databasemode]

# these parameters are mysql-specific, figure out how to improve
ActiveRecord::Base.establish_connection(:adapter => curr_db["adapter"],
:database => curr_db["database"],
:host => curr_db["host"],
:username => curr_db["username"],
:password => curr_db["password"])

Zone.find(:all).each do |zone|
 puts zone
end

Tags: ,

Le dimanche, c’est repos

Sunday, June 11th, 2006

Quelques sites photographiques à visiter:

  • “Le collectif SIC”:http://www.collectifsic.com/ et “le blog”:http://francois-cs.blogspot.com/ de l’un de ses membres ;
  • La photographe “Heidi Good”:http://www.heidigood.com/, d’incroyables portraits ;
  • La page “digitalrailroad”:http://www.digitalrailroad.net/bruno/ de Bruno Stevens, avec deux reportages récents faits en Angola, sur le choléra ainsi que la tuberculose. Hasselblad et Tri-x au rendez-vous ;
  • “un autre”:http://www.lagaraje.com/ pour la route.

Le soir, quand mon emploi du temps le permet, j’aide un peu “Shinji”:http://kuwayama.com/ à améliorer la rapidité de “lightstalkers”:http://www.lightstalkers.org/. Du “rails”:http://www.rubyonrails/, évidemment. Les erreurs que je peux y voir et que vous pourriez être intéressés de ne pas reproduire lors de vos propres développements :

La révision, c’est bon. L’utilisation d’outils de gestion de révisions tels que CVS ou “Subversion”:http://subversion.tigris.org/ (préférez Subversion) est primordiale. Sans cela, pas de développements à plusieurs, pas d’historique, pas de possibilité de backuper votre travail facilement. Bref, sans ça, ne commencez même pas à développer, même pour un projet à une personne.

La gestion de tickets: “trac”:http://www.edgewall.com/trac/, le 2ème outil à mettre en place. Il vous permettra de noter les bugs, fonctionnalités à développer ultérieurement, et de concentrer tout ça sur une seule page. Vous pourrez de plus naviguer dans les sources, controler les derniers travaux effectués sur le projet (timeline), gérer votre TODO list. Le matin en arrivant à votre bureau (ou en vous déplaçant du lit à l’ordinateur), il vous suffit d’aller voir les fonctionnalités à rajouter, en les listant par ordre de priorité. Tous les acteurs du projets pourront faire de même.

Attention à votre code source, n’utilisez que tabulations ou espaces, pas les deux. La consistance dans vos sources et quelques commentaires bien placés faciliteront grandement le travail de vos collegues (futurs ou actuels).

Plus spécifiquement rails. D’abord l’utilisation de find(), ensuite et seulement ensuite, pour des raison d’optimisation, l’usage de find_by_sql(). Pas l’inverse.

Pas de code dans les fichiers views/, comme l’indique le pattern MVC. Pas de @comments = Comment.find() dans les vues, jamais. Les vues se contentent de l’affichage.

La première chose à vérifier quand vous développez votre site, le nombre de requêtes SQL dans le fichier de log (log/development.log) et l’utilisation pour celles-ci de clé (DESC SELECT … dans la console mysql). L’usage de :includes => [] dans le code rails est souvent requis. Conseil: il est souvent plus rapide d’avoir 2 requetes SQL plus simples, qu’une seule très compliquée avec beaucoup de :includes.

L’utilisation massive de caches, et particulièrement pour la page principale du site (caches_page). L’affichage d’information personnelle pourra toujours se faire en javascript directement, ou en Ajax. Qui n’apprécie pas un site qui se charge instantanément, plutôt qu’un autre ou il faut, pour chaque page, attendre 2 secondes?

Un petit rappel: j’effectue toujours des conseils autour de développements logiciels (web ou non). Ce que mes clients devraient attendre de leurs prestataires :

  • Un accès permanent et complet au code source en développement ;
  • Un accès permanent au site en cours de développement, pour vérifier au quotidien l’avancement du projet ;
  • Un accès à une interface de gestion de ticket, pour remonter le plus rapidement possible les mauvaises surprises ;
  • De manière générale, une relation étroite entre vous, et nous.

Et ça tombe bien, vous aurez tout ça ici.


Tags: , , , , ,

FabienPenso.com: l’image du jour

Monday, June 5th, 2006

Voilà terminé une version Ajaxifiée de “fabienpenso.com”:http://fabienpenso.com. Dehors Flash, bienvenue HTML (et ça m’a pris moins de temps que Flash). C’est quoi ce site ? C’est une photo par jour (pas tous les jours), pas forcément pris le jour même (sinon faut se dépêcher de la prendre puis de courir la mettre en ligne … :)Le site est évidemment fait sous “rails”:http://www.rubyonrails.org/ mais ça change pas grand chose étant donné la simplicité du bouzin.


Tags: , , , , , ,

auth_generator 1.5.0 !

Tuesday, December 6th, 2005

Rails users, I finaly released the auth_generator v1.5.0. You can now use your favorite crypting algo (md5, sha, make your own, salted depending of the login) to store passwords.

You now have unit testing for the model. You can disable account creation if you wish, select the size of the buddy icons. And there is a trac too!

Auth_generator is an authentification generator for rails. It gives you a complete administration interface to handle users. You should be able to install it within minutes.

Update, Please use the 1.5.1 version. The 1.5.0 is broken, !$@.

Another update, You should use 1.5.2 in fact, 1.5.1 was still broken!


Tags:

Rails, Apache on front, lighttpd behind

Tuesday, November 15th, 2005

I needed to use Apache on front because its mod_gzip plugin works pretty well and is efficient. Lighttpd doesn’t compress anything that ain’t static pages.

If you use that mode, rails will see requests coming from 127.0.0.1 and will keep displaying Routing error and not 404 pages even in production mode (rails does that for local request by default).

You’ll want to switch that off with the following piece of code. Paste it into the application_controller.rb file :

module ActionController module Rescue def local_request? false end end end

And voilà, you have your usual 404 errors :)


Tags:

rails and the authentification generator

Saturday, November 12th, 2005

I’ve released a new version of my “auth generator for rails”:http://penso.info/code/auth_generator.

It should now work fine with 0.14.X. Please submit me any ideas, feedbacks, things you’d like to be included in such a generator.


Tags: