ruby

Quelles nouvelles dans Rails Edge : Plus de File.join avec Rails.root

Si comme moi, vous avez besoin d'atteindre des dossier dans votre Rails.root. Un des nouveautés de Rails 2.3 intégrée dans ce commit, vous réduira le travail.

Rails.root('public', 'files', 'foo') == File.join(Rails.root, 'public', 'files', 'foo')
[...]
Published on Dim 30 nov 2008 11:18
0 commentaires

La before Paris on Rails, c'est la Rails Party le 30 Novembre 2008

Alors que la journée Paris On Rails aura lieu le 1er décembre, l'association RubyFrance où je fais partie du Conseil d'Administration a décidé d'organiser une après-midi/soirée la veille. Ce rassemblement aura pour objectif de permettre à tous les acteurs de la communauté RubyOnRails de se rencontrer dans un endroit convivial.

Au niveau du programme, il y aura des Hackfest (Typo et peut-être Pictrails ?) et des présentations toutes l'après midi. J'animerais ainsi une ou deux présentations. Tout d'abord sur l'exemple de migration d'une application RubyOnRails de Rails 2.0 à Rails 2.2 en montrant l'exemple de Typo. Ensuite sur les Test par Rspec que je pratique sur Pictrails et Typo.

Bien-sûr, le programme n'est pas figé vu que le maitre mot de cette journée est « Cool et Relax ».

En tout cas moi j'y serais durant toute la période et je serais heureux de rencontrer de nouvelle personne de la communauté.

Donc tout en chœur dites : J'Y SERAIS \o/

Pour plus d'information, vous pouvez consulter la page d'évenement sur le site rubyfrance. Sinon Frédéric sera aussi présent.

[...]
Published on Ven 21 nov 2008 15:15
1 comment

Sortie de Pictrails 0.6.0

Un peu après 1 mois de développement une nouvelle version de Pictrails est disponible.

Il n'y a pas de grande modification ni de grand ajout de fonctionnalité. Seule deux fonctionnalités ont été ajoutées. Elles font suite à une demande d'utilisateur.

La première fonctionnalité est la possibilité de copier des images d'une galerie à une autre ? Ça peux parfois être utile.

L'autre fonctionnalité est la possibilité de définir l'image qui défini une galerie. En effet, cette image était défini automatiquement dans les versions précédentes. On peux désormais choisir un image de façon aléatoire ou alors en en définissant une particulière.

Cette version est la dernière supporté par la version de Rails 2.1. Désormais le HEAD sera basculé sur Rails 2.2 qui ne devrait pas tarder à sortir.

Vous pouvez donc télécharger la nouvelle version et l'installer.

English translation

[...]
Published on Mar 18 nov 2008 20:32
3 commentaires

Supprimer tous les messages d'anonyme du forum redmine

Si comme moi vous avez ouvert le forum Redmine au anonyme pour éviter qu'un utilisateur ne soit obligé de s'inscrire pour poster sur le forum, vous êtes sujet au Spam, vu que Redmine n'a encore aucun système anti-spam. Vous pouvez ainsi vous retrouver dans cette position.

screenshot de mon forum redmine spammé

Une fois que vous avez bloqué l'ajout de message par les anonymes, il faut maintenant faire le ménage. Soit, vous prenez message par message et faite le bouton supprimer. Soit vous utilisez la console comme moi. Voici donc les commandes à réaliser pour supprimer tous les messages d'anonyme du forum. Bien-sûr, cela implique que si vous avez des utilisateurs qui ont posté en tant qu'anonyme, leur poste sera détruit.

rails@shinydedi /var/rails/redmine/current $ ./script/console production                                                                                                                          
Loading production environment (Rails 2.0.2)
>> User.anonymous
=> #<AnonymousUser id: 4, login: "", hashed_password: "", firstname: "", lastname: "Anonymous", mail: "", mail_notification: false, admin: false, status: 0, last_login_on: nil, language: "", auth_source_id: nil, created_on: "2008-01-26 16:39:30", updated_on: "2008-01-26 16:39:30", type: "AnonymousUser">
>> User.anonymous.id
=> 4
>> Message.find_all_by_author_id(User.anonymous.id).size
=> 1693
>> Message.find_all_by_author_id(User.anonymous.id).each { |me| me.destroy }
=> [.........]
>>

English translation

[...]
Published on Mar 04 nov 2008 07:19
0 commentaires

Activer un compte Redmine par la console rails

Si par le plus grand malheur vous avez bloqué l'envoi de mail sur votre machine où redmine est installé. Vos utilisateurs ne peuvent plus recevoir d'email d'activation de compte. Redmine étant super pratique, vous ne pouvez pas activer le compte directement par l'interface web. Il faut donc passer par la console rails pour activer ce compte. Voici donc les commandes à réaliser pour activer le compte.

Dans cet exemple, nous allons supposer que je veux activer le compte du login 'ook'

Premièrement, il faut se connecter en console dans le mode production, où celui utilisé par votre instance web.

$ ./script/console production

Une fois dans la console, il faut chercher l'utilisateur, changé son état et ensuite supprimer le token d'activation. La suite de commande permet cela :

rails@shinydedi /var/rails/redmine/current $ ./script/console production
Loading production environment (Rails 2.0.2)
>> u = User.find_by_login 'ook'
=> #<User id: 7, login: "ook", hashed_password: "8a45629b374f3e667ea72494246b17a11309ffff", firstname: "Thomas", lastname: "XXX", mail: "thomas@xxx.com", mail_notification: false, admin: false, status: 2, last_login_on: nil, language: "fr", auth_source_id: nil, created_on: "2008-10-27 18:50:54", updated_on: "2008-10-27 18:50:54", type: nil>
>> u.status = User::STATUS_ACTIVE
=> 1
>> u.save
=> true
>> t = Token.find_by_action_and_user_id('register', u.id)
=> #<Token id: 16, user_id: 7, action: "register", value: "brVmdX8Sf0IecApDEWs0BmiD6ZN3DgsDoshpBZ2e", created_on: "2008-10-27 18:50:54">
>> t.destroy
=> #<Token id: 16, user_id: 7, action: "register", value: "brVmdX8Sf0IecApDEWs0BmiD6ZN3DgsDoshpBZ2e", created_on: "2008-10-27 18:50:54">

Ça y est votre utilisateur est activé. Il peux désormais se connecter comme si il avait réalisé l'activation par mail.

English Translation

[...]
Published on Lun 03 nov 2008 13:09
2 commentaires

Sortie de Pictrails 0.5.0

Peu de temps avant mon anniversaire qui a lieu le 11 Octobre, voici une nouvelle version de Pictrails.

Durant cette release, la grosse nouveauté est l'ajout des commentaires. Désormais sur chaque photo, des commentaires peuvent être ajoutés. Au niveau de l'administration, il y a la possibilité de gérer ces commentaires en les éditant et les supprimant. Ce n'est bien sûr que le début de l'ajout des commentaires sur pictrails. Si vous désirez formater vos commentaires, vous pouvez le faire avec le format redcloth.

Au niveau ergonomie, j'ai ajouter la vue des photos précédentes et suivantes dans la même galerie. Cette fonctionnalité n'était pas intégré dans Pictrails. Cette erreur est donc désormais résolu.

Les photos sont désormais triés de la photo la plus récente à la plus ancienne dans la vue des photos pour la galerie.

Tout retour est toujours le bienvenu ainsi que la proposition de design. Je rappele aussi qu'une version de démo est disponible. avec comme login admin/pictrails

English translation

[...]
Published on Sam 04 oct 2008 15:51
0 commentaires

Quelles nouvelles dans Rails Edge : Connection pools

Traduction de l'article de Ryan Daigle, What's new in edge rails : Connection Pools

Avec la venue prochaine de Rails thread-safe, il était nécessaire d'ajouter le pool de connection à la base de donnée. Moins qu'une fonctionnalité, mais un détail d'implémentation caché. Vous avez la possibilité de définir la taille de ce pool. Cette configuration est dans le fichier database.yml avec le mot clé pool:

development:   
  adapter: mysql
  username: root    
  database: myapp_dev
  pool: 10 

Vous voilà avec un pool de connection. Facile

[...]
Published on Lun 08 sept 2008 20:46
3 commentaires

Quelles nouvelles dans Rails Edge : Les layouts pour les mails

Traduction de l'article de Ryan Daigle, What's new in edge rails : Mailer Layouts

Rails a ajouté la possibilité d'utiliser des layouts pour les mails exactements comme il est actuellement possible pour leurs grand frère les vues. Il faut juste noté que pour qu'un layout de mail soit automatiquement reconnu, il doit se finir par _mailer. Donc pour un mail:

Cass UserMailer < ActionMailer::Base
  def registration(user)
    subject    "You've registered"
    from       "system@example.com"
  end
end

vous n'aurait besoin que d'un layout à layouts/user_mailer.html.erb. Si vous spécifiez explicitement le layout vous n'avez pas besoin du suffix _mailer. Ainsi, dans l'exemple suivant, un layout à layouts/email.html.erb suffit:

class UserMailer < ActionMailer::Base
  layout 'email'
  ...
end

A partir de maintenant, vous pouvez faire de joli petit email. Vous avez désormais tous les outils.

[...]
Published on Lun 08 sept 2008 20:37
2 commentaires

Quelles nouvelles dans Rails Edge : Les Shallow routes

Traduction de l'article de Ryan Daigle, What's new in edge rails : Shallow routes

Le système des routes avec Rails est assez malin. Dans une optique d'être le plus descriptif possible, la description des ressources est fait au niveau des URL avec une DSL spécifique pour les routes :

       
map.resources :users do |user|         
  user.resources :articles do |article|
    article.resourcs :comments
  end
end         

Néanmoins, si cette configuration permet de voir les articles disponibles à l'URL /users/1/articles et les commentaires à l'URL /users/1/articles/1/comments, il y a des cas où on voudrais outrepasser cette hiérarchie et accéder directement à la ressource en question. Désormais avec l'option des shallow route, vous le pouvez.

                          
map.resources :users, :shallow => true do |user|
  user.resources :articles do |article|
    article.resources :comments
  end
end         

Cette configuration permet de conserver les routes imbriquées et vous donne accès directement au route comme ceci:

      
articles_path #=> '/articles'                             
comments_path #=> '/comments'                             
article_comments_path(@article) #=> '/articles/1/comments'

Plus besoin de déclarer séparement les routes directes en plus des routes imbriquées. l'option :shallow fait tout les routes nécessaires automatiquement pour vous.

[...]
Published on Lun 08 sept 2008 20:11
0 commentaires

Profiler une requête rails

Pour découvrir le bug dont j'ai reporté précédement les effets, j'ai voulu réaliser un profile de la requête executée. Ca devait me permettre de voir ce qui prenait vraiment beaucoup de temps dans l'execution de cette page.

Utilisation du script Request Profiler

Depuis Rails 2.0, un nouveau script a été ajouté, script/performance/request. Ce script permet de réaliser un profile d'une ou plusieurs requête internet.

Pour indiquer les requêtes à executer il suffit de réaliser un petit fichier de script avec le même format que les tests d'intégrations. Voici un exemple issue du changelog de rails.

get_with_redirect '/'
say "GET / => #{path}"
post_with_redirect '/sessions', :username => 'john', :password => 'doe'
say "POST /sessions => #{path}"

Une fois le script réalisé, il suffit de lancer la commande en définissant le nombre de requêtes qui seront effectuées

$ ./script/performance/request -n 10 login_session.rb

Par contre, il faut faire très attention, il n'y a aucune solution (ou tout du moins à ma connaissance) pour définir les valeurs de la session. La session est vierge à chaque lancement de script. Il faut donc réaliser la connection de login au préalable pour avoir un utilisateur loggé par exemple.

Incompatibilité Rails 2.1 et ruby-prof

Alors que j'avais indiqué l'ajout d'un nouveau script dans Rails Edge qui nécessitait ruby-prof 0.6.1, je pensais que c'était le seul endroit qui nécessitait cette version de ruby-prof qui n'existe pas encore (dernière version stable : 0.6.0 en téléchargement sur rubyforge). Hélas, ce n'est pas le cas. Depuis la version 2.1 de Rails, le script performance/request nécessite aussi ruby-prof 0.6.1. Mais cette version, n'est toujours pas encore sortie officielement. Il faut donc générer et installer ce gem pour arriver à avoir cette fonctionnalité. En effet, même en modifiant la version de ruby-prof des méthodes n'existent pas dans les versions antérieurs à la version 0.6.1

Génération et installation de ruby-prof-0.6.1

Il faut d'abord récupérer les sources directements à partir du svn de ruby-prof

svn co http://ruby-prof.rubyforge.org/svn/

Ensuite, il faut générer le gem

$ rake package

Enfin, il suffit d'installer le gem.

# gem install pkg/ruby-prof-0.6.1.gem

Désormais, ruby-prof 0.6.1 est installé et vous pouvez utiliser pleinement le script performance/request.

English translation

[...]
Published on Mer 03 sept 2008 18:48
0 commentaires

RSS Follow me on Twitter