Y'a pas comme un truc qui vous fait hurler là ?
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'
endDans 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
endEt non, cette fois, il n’y a rien à gagner.