Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: gh-pages
Fetching contributors…

Cannot retrieve contributors at this time

385 lines (241 sloc) 13.483 kB
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>Vivre avec Rails Edge #17 - Shiny happy people coding</title>
<meta name="author" content="Cyril Mougel">
<meta name="description" content="Depuis le début, je suis les news de Chu Yeow concernant les nouveautés intégrés à Rails dans sa version de développement. J&#8217;ai décidé d&#8217; &hellip;">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://blog.shingara.fr/vivre-avec-rails-edge-17.html">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="Shiny happy people coding" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-11352302-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">Shiny happy people coding</a></h1>
<h2>Codons avec le sourire</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:blog.shingara.fr" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div>
<article class="hentry" role="article">
<header>
<h1 class="entry-title">Vivre avec Rails Edge #17</h1>
<p class="meta">
<time datetime="2008-04-24T00:00:00+02:00" pubdate data-updated="true">Apr 24<span>th</span>, 2008</time>
| <a href="#disqus_thread">Comments</a>
</p>
</header>
<div class="entry-content"><p>Depuis le début, je suis les news de <a href="http://blog.codefront.net">Chu Yeow</a> concernant les nouveautés intégrés à Rails dans sa version de développement. J&#8217;ai décidé d&#8217;essayer de vous les traduire régulièrement ici.</p>
<p>Traduction de la <a href="http://blog.codefront.net/2008/04/20/living-on-the-edge-of-rails-17/">news #17</a>
<p>Peu de chose se sont passé cette semaine sur Edge Rails. Il semblerait que nous aillons un nouveau membre dans le Rails core, <a href="http://joshpeek.com/">Joshua Peek</a>. Le nouveau <a href="http://rails.lighthouseapp.com/">bug tracking de Rails</a> sur Lighthouse est pret à utiliser, donc vous pouvez y soumettre vos patchs et rapport de bug dessus.</p>
<p>Le rapport de cette semaine couvre les changements entre le 14 Avril 2008 et le 20 Avril 2008 (Jour correspondant à l&#8217;enregistrement de <a href="http://railsenvy.com/podcast/">Rails Envy podcast</a>).</p>
<h3>caches_page conditionel</h3>
<p>The <code>caches_pages</code> peuvent prendre une option <code>:if</code> pour indiquer quand une pave peux être vraiment caché via une Proc. Vous pouvez maintenant faire ceci par exemple:</p>
<typo:code lang="ruby">caches_page :index, :if => Proc.new { |c| !c.request.format.json? }</typo:code>
<p>Cela met votre index en cache uniquement si le format de la requête n&#8217;est pas du JSON.</p>
<p>Cette fonctionnalité a été ajouté par <a href="http://deaddeadgood.com/">Paul Horsfall</a>.</p>
<p>Révision concernant cette fonctionnalité: <a href="http://github.com/rails/rails/commit/14a40804a29a57ad05ca6bffbe1e5334089593a9">http://github.com/rails/rails/commit/14a40804a29a57ad05ca6bffbe1e5334089593a9</a></p>
<h3>Nouvelle ActionView::TestCase pour tester les helpers des vues</h3>
<p>Rappelez vous comment vous pouvez actuellement utiliser <a href="http://blog.codefront.net/2007/12/27/dry-in-your-functional-and-actionmailer-tests-rails-20-a-feature-a-day-7/">les classes TestCase spécialisé pour tester les classes Controllers et ActionMailer (en)</a>? Désormai
s vous pourrez faire la même chose pour vos helpers de vues Rails avec la nouvelle classe ActionView::TestCase.</p>
<p>Voici un petit exemple:</p>
<typo:code lang="ruby">module PeopleHelper
def title(text)
content_tag(:h1, text)
end
def homepage_path
people_path
end
end
class PeopleHelperTest > ActionView::TestCase
def setup
ActionController::Routing::Routes.draw do |map|
map.people &#8216;people&#8217;, :controller => &#8216;people&#8217;, :action => &#8216;index&#8217;
map.connect &#8216;:controller/:action/:id&#8217;
end
end
def test_title
assert_equal &#8221;<h1>Ruby on Rails</h1>&#8221;, title(&#8220;Ruby on Rails&#8221;)
end
def test_homepage_path
assert_equal &#8220;/people&#8221;, homepage_path
end</typo:code>
<p>Remercions Josh Peek pour cette jolie petite amélioration..</p>
<h3>mem_cache_store de ActiveSupport::Cache accepte des options</h3>
<p>Même si Memcache-client a été ajouté récement à ActiveSupport, on ne pouvait pas spécifié toutes les options de configuration derrière l&#8217;ip du serveur memcache. Maintenant vous pouvez passer beaucoup plus d&#8217;options comme ceci:</p>
<typo:code lang="ruby">config.action_controller.fragment_cache_store = :mem_cache_store, &#8216;localhost&#8217;, { :compression => true, :debug => true, :namespace => &#8216;foo&#8217; }</typo:code>
<p>Ce patch est de <a href="http://blog.innerewut.de/">Jonathan Weiss</a>.</p>
<p>Révision concernant cette fonctionnalité: <a href="http://github.com/rails/rails/commit/9e1d506a8cfedef2fdd605e4cbf4bf53651ad214">http://github.com/rails/rails/commit/9e1d506a8cfedef2fdd605e4cbf4bf53651ad214</a></p>
</div>
<footer>
<p class="meta">
<span class="byline author vcard">Posted by <span class="fn">Cyril Mougel</span></span>
<time datetime="2008-04-24T00:00:00+02:00" pubdate data-updated="true">Apr 24<span>th</span>, 2008</time>
</p>
<div class="sharing">
<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.shingara.fr/vivre-avec-rails-edge-17.html" data-via="shingara" data-counturl="http://blog.shingara.fr/vivre-avec-rails-edge-17.html" >Tweet</a>
<div class="g-plusone" data-size="medium"></div>
<div class="fb-like" data-send="true" data-width="450" data-show-faces="false"></div>
</div>
<p class="meta">
<a class="basic-alignment left" href="/migration-basee-sur-lheure-utc-et-plus-incremental.html" title="Previous Post: Migration basée sur l'heure utc et plus incremental">&laquo; Migration basée sur l'heure utc et plus incremental</a>
<a class="basic-alignment right" href="/screencast-de-presentation-rails.html" title="Next Post: Screencast de presentation rails">Screencast de presentation rails &raquo;</a>
</p>
</footer>
</article>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/0-downtime-avec-unicorn.html">0 Downtime avec Unicorn</a>
</li>
<li class="post">
<a href="/release-public-folder.html">Release de public folder</a>
</li>
<li class="post">
<a href="/pourquoi-jai-arrete-decent-exposure.html">pourquoi j'ai arrêté decent_exposure</a>
</li>
<li class="post">
<a href="/tester-ses-vues-rabl.html">tester ses vues rabl</a>
</li>
<li class="post">
<a href="/vundle-ou-le-bundler-de-vim.html">vundle ou le bundler de vim</a>
</li>
<li class="post">
<a href="/dante-pour-mettre-du-daemon-dans-son-code.html">dante pour mettre du daemon dans son code</a>
</li>
<li class="post">
<a href="/moped-le-nouveau-driver-mongodb-pour-ruby.html">moped le nouveau driver mongodb pour ruby</a>
</li>
<li class="post">
<a href="/quiet-assets-le-limiteur-de-log.html">Quiet Assets le gem qui limite les logs</a>
</li>
<li class="post">
<a href="/telecharger-fichier-de-basecamp.html">Récupération de ses fichiers sur basecamp</a>
</li>
<li class="post">
<a href="/translate-on-mongoid.html">Localize avec mongoid</a>
</li>
</ul>
</section>
<section>
<h1>GitHub Repos</h1>
<ul id="gh_repos">
<li class="loading">Status updating...</li>
</ul>
<a href="https://github.com/shingara">@shingara</a> on GitHub
<script type="text/javascript">
$.domReady(function(){
if (!window.jXHR){
var jxhr = document.createElement('script');
jxhr.type = 'text/javascript';
jxhr.src = '/javascripts/libs/jXHR.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(jxhr, s);
}
github.showRepos({
user: 'shingara',
count: 10,
skip_forks: false,
target: '#gh_repos'
});
});
</script>
<script src="/javascripts/github.js" type="text/javascript"> </script>
</section>
<section>
<h1>Latest Tweets</h1>
<ul id="tweets">
<li class="loading">Status updating...</li>
</ul>
<script type="text/javascript">
$.domReady(function(){
getTwitterFeed("shingara", 4, false);
});
</script>
<script src="/javascripts/twitter.js" type="text/javascript"> </script>
<a href="http://twitter.com/shingara" class="twitter-follow-button" data-show-count="true">Follow @shingara</a>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright &copy; 2013 - Cyril Mougel -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
var disqus_shortname = 'shinydevblog';
var disqus_script = 'count.js';
(function () {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = 'http://' + disqus_shortname + '.disqus.com/' + disqus_script;
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
}());
</script>
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#appId=212934732101925&xfbml=1";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<script type="text/javascript">
(function() {
var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
script.src = 'https://apis.google.com/js/plusone.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
})();
</script>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>
Jump to Line
Something went wrong with that request. Please try again.