Je n’ai pas vraiment le temps d’écrire en ce moment, malgré une trentaine d’articles en cours de rédaction, au point d’avoir fait sauter la sacro-sainte revue de presse de vendredi dernier.
Je tenais tout de même à vous faire partager ce bout de code digne du Daily WTF sur lequel je suis tombé tout à l’heure en travaillant sur la prochaine release de Typo, l’outil de publication en Ruby on Rails qui propulse ce site. Il se trouve visiblement là depuis plusieurs années, et je me demande si ce n’est pas à lui que mon blogware favori doit sa réputation de bloatware, malgré des optimisations déjà apportées par ailleurs.

Lecteur, ton oeil de lynx verra-t-il ce qui m’a fait hurler ?

Dans le contrôleur

 def index
   @articles = Article.find_all_by_date(*params.values_at(:year, :month, :day))
   @page_title = index_title
   @description = index_description
   @keywords = (this_blog.meta_keywords.empty?) ? "" : this_blog.meta_keywords
   
   respond_to do |format|
     format.html { render_paginated_index }
     format.atom do
       render :partial => 'articles/atom_feed', :object => @articles[0,this_blog.limit_rss_display]
     end
     format.rss do
       auto_discovery_feed(:only_path => false)
       render :partial => 'articles/rss20_feed', :object => @articles[0,this_blog.limit_rss_display]
     end
   end
 end

def render_paginated_index(on_empty = _("No posts found..."))
   return error(on_empty, :status => 200) if @articles.empty?

   @pages = Paginator.new self, @articles.size, this_blog.limit_article_display, params[:page]
   start = @pages.current.offset
   stop  = (@pages.current.next.offset - 1) rescue @articles.size
   # Why won't this work? @articles.slice!(start..stop)
   @articles = @articles.slice(start..stop)
   render :action => 'index'
 end

Dans le modèle

 # Find all articles on a certain date
 def self.find_all_by_date(year, month = nil, day = nil)
   if !year.blank?
     find_published(:all,
                    :conditions => { :published_at =>
                      time_delta(year,month,day) })
   else
     find_published(:all)
   end
 end

Et non, cette fois, il n’y a rien à gagner.

Perry the Platypus wants you to subscribe now! Even if you don't visit my site on a regular basis, you can get the latest posts delivered to you for free via Email: