<?xml version="1.0"?>
<rdf:RDF
	xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:foaf="http://xmlns.com/foaf/0.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns="http://purl.org/rss/1.0/"
>
<channel rdf:about="http://planetruby.0x42.net/">
	<title>Planet Ruby</title>
	<link>http://planetruby.0x42.net/</link>
	<description>Planet Ruby - http://planetruby.0x42.net/</description>

	<items>
		<rdf:Seq>
			<rdf:li rdf:resource="http://pragdave.blogs.pragprog.com/pragdave/2012/02/smart-constants.html" />
			<rdf:li rdf:resource="http://oreilly.com/catalog/9781934356807/" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2012-01-26:30057" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2012-01-20:29824" />
			<rdf:li rdf:resource="urn:uuid:b0ad9201-5e73-47b4-8a5a-f3330f9a7d86" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2012-01-04:29804" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-12-20:29722" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-12-20:29697" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-12-06:29687" />
			<rdf:li rdf:resource="http://oreilly.com/catalog/9781449304232/" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-11-20:29652" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-11-18:29621" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-11-18:29622" />
			<rdf:li rdf:resource="http://pragdave.blogs.pragprog.com/pragdave/2011/11/followup-on-the-email-experiment.html" />
			<rdf:li rdf:resource="http://oreilly.com/catalog/9781449380373/" />
			<rdf:li rdf:resource="tag:blogger.com,1999:blog-4704664917418794835.post-1798238886261285117" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-10-07:29602" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-10-06:29591" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-09-29:29575" />
			<rdf:li rdf:resource="tag:weblog.rubyonrails.org,2011-09-15:29516" />
		</rdf:Seq>
	</items>
</channel>

<item rdf:about="http://pragdave.blogs.pragprog.com/pragdave/2012/02/smart-constants.html">
	<title>Dave Thomas: Smart constants</title>
	<link>http://pragdave.blogs.pragprog.com/pragdave/2012/02/smart-constants.html</link>
	<content:encoded>&lt;p&gt;I've been really enjoying James Edward Gray II's&amp;#0160;&lt;a href=&quot;http://subinterest.com/rubies-in-the-rough&quot; target=&quot;_self&quot;&gt;Rubies in the Rough&lt;/a&gt;&amp;#0160;articles. Every couple of weeks, he publishes something that is guaranteed to get me thinking about some aspect of coding I hadn't considered before.&lt;/p&gt;
&lt;p&gt;His&lt;a href=&quot;http://subinterest.com/rubies-in-the-rough/10-test-driving-an-algorithm-part-1&quot; target=&quot;_self&quot;&gt; latest article&lt;/a&gt; is part I of an exploration of an algorithm for the &lt;a href=&quot;http://puzzlenode.com/puzzles/11-hitting-rock-bottom&quot; target=&quot;_self&quot;&gt;Hitting Rock Bottom&lt;/a&gt;&amp;#0160;problem posed by&amp;#0160;&amp;#0160;by Gregory Brown &amp;amp; Andrea Singh. At its core, the problem asks you to simulate pouring water into a 2D container, filling it using a simple set of rules.&lt;/p&gt;
&lt;p&gt;As I was coding up my solution, I found I had code like&lt;/p&gt;

&lt;p&gt;Here &lt;span&gt;&amp;quot; &amp;quot;&lt;/span&gt; is a cell containing air, and &lt;span&gt;&amp;quot;~&amp;quot;&lt;/span&gt; a watery cell. So clearly we should create some named constants for that:&lt;/p&gt;

&lt;p&gt;But it occurred to me that we could use Ruby's singleton methods to give AIR and WATER a little smarts:&lt;/p&gt;

&lt;p&gt;Now you could argue that the cave object should do this: &lt;span&gt;cave.watery?&lt;/span&gt;, or that the individual elements in the cave should be objects that know their moisture content, rather than simply characters. I don't agree with the first (simply because the cave is the container, and the water/air is the separate stuff that goes into that container). I have a lot of sympathy for the second, and I'd probably end up there given a sufficiently large nudge during a refactoring.&amp;#0160;&lt;/p&gt;
&lt;p&gt;But, for the problem at hand, simply decorating the two constants with a domain method seems to result in code that is a lot more readable. It isn't a technique I'd used before, so I thought I'd share.&lt;/p&gt;
&lt;p&gt;(And remember to check out &lt;a href=&quot;http://subinterest.com/rubies-in-the-rough&quot; target=&quot;_self&quot;&gt;Rubies in the Rough&lt;/a&gt;…)&lt;/p&gt;</content:encoded>
	<dc:date>2012-02-02T23:30:29+00:00</dc:date>
</item>
<item rdf:about="http://oreilly.com/catalog/9781934356807/">
	<title>O'Reilly Ruby: The Cucumber Book</title>
	<link>http://feeds.oreilly.com/~r/oreilly/ruby/~3/_h67H1jzE3E/</link>
	<content:encoded>&lt;a href=&quot;http://oreilly.com/catalog/9781934356807/&quot;&gt;&lt;img src=&quot;http://covers.oreilly.com/images/9781934356807/bkt.gif&quot; /&gt;&lt;/a&gt;&lt;p&gt;Your customers want rock-solid, bug-free software that does exactly what they expect it to do. Yet they can't always articulate their ideas clearly enough for you to turn them into code. &lt;em&gt;The Cucumber Book&lt;/em&gt; dives straight into the core of the problem: communication between people. Cucumber saves the day; it's a testing, communication, and requirements tool - all rolled into one.&lt;/p&gt;
	&lt;img src=&quot;http://feeds.feedburner.com/~r/oreilly/ruby/~4/_h67H1jzE3E&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2012-01-31T21:35:17+00:00</dc:date>
	<dc:creator>Aslak Hellesoy, Matt Wynne</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2012-01-26:30057">
	<title>Ruby on Rails: Rails 3.2.1 has been released</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/0bqtPVn_W2A/rails-3-2-1-has-been-released</link>
	<content:encoded>&lt;p&gt;Rails 3.2.1 is out, with some fixes and doc improvements. Please check the &lt;a href=&quot;https://gist.github.com/1685812&quot;&gt;CHANGELOGs gist&lt;/a&gt; for details. &lt;/p&gt;</content:encoded>
	<dc:date>2012-01-26T23:33:09+00:00</dc:date>
	<dc:creator>fxn</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2012-01-20:29824">
	<title>Ruby on Rails: Rails 3.2.0: Faster dev mode &amp; routing, explain queries, tagged logger, store</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/L2cdhO6bEoY/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store</link>
	<content:encoded>&lt;p&gt;So we didn’t quite make the December release date as we intended, but hey, why break a good tradition and start hitting release targets now! In any case, your patience has been worldly rewarded young grasshopper: Rails 3.2 is done, baked, tested, and ready to roll!&lt;/p&gt;


	&lt;p&gt;I’ve been running on 3-2-stable for a few months working on &lt;a href=&quot;http://37signals.com/basecampnext/&quot;&gt;Basecamp Next&lt;/a&gt; and it’s been a real treat. The new faster dev mode in particular is a major step up over 3.1.&lt;/p&gt;


	&lt;p&gt;Do remember that this is the last intended release series that’s going to support Ruby 1.8.7. The master git branch for Rails is now targeting Rails 4.0, which will require Ruby 1.9.3 and above. So now is a great time to start the work on getting your app ready for the current version of Ruby. Let’s not hang around old versions forever and a Sunday like those Python guys :).&lt;/p&gt;


	&lt;p&gt;There’s a &lt;a href=&quot;https://github.com/rails/rails/tree/v3.2.0&quot;&gt;v3.2.0 tag on Github&lt;/a&gt; and we of course we still have the &lt;a href=&quot;https://github.com/rails/rails/tree/3-2-stable&quot;&gt;3-2-stable branch&lt;/a&gt; as well. You can see all the glorious details of everything that was changed in our &lt;a href=&quot;https://gist.github.com/1648523&quot;&gt;&lt;span class=&quot;caps&quot;&gt;CHANGELOG&lt;/span&gt; compilation&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;For documentation, we have the &lt;a href=&quot;http://guides.rubyonrails.org/3_2_release_notes.html&quot;&gt;3.2 release notes with upgrade instructions&lt;/a&gt;, both &lt;a href=&quot;http://api.rubyonrails.org/&quot;&gt;the &lt;span class=&quot;caps&quot;&gt;API&lt;/span&gt; docs&lt;/a&gt; and &lt;a href=&quot;http://guides.rubyonrails.org/&quot;&gt;the guides&lt;/a&gt; have been generated for 3.2 as well, and there’s a brand new &lt;a href=&quot;http://pragprog.com/book/rails4/agile-web-development-with-rails&quot;&gt;3.2-compatible version of Agile Web Development with Rails&lt;/a&gt;. A smörgåsbord indeed!&lt;/p&gt;


	&lt;p&gt;Note: If you’re having trouble installing the gems under Ruby 1.8.7, you’ve probably hit a RubyGems bug with &lt;span class=&quot;caps&quot;&gt;YAML&lt;/span&gt; that’s been fixed in RubyGems 1.8.15. You can upgrade RubyGems using “gem update—system”.&lt;/p&gt;


	&lt;p&gt;If you can’t be bothered with the full release notes, here’s a reprint of a few feature highlights from when we did the first release candidate:&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Faster dev mode &amp;amp; routing&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;The most noticeable new feature is that development mode got a ton and a half faster. Inspired by &lt;a href=&quot;https://github.com/paneq/active_reload&quot;&gt;Active Reload&lt;/a&gt;, we now only reload classes from files you’ve actually changed. The difference is dramatic on a larger application.&lt;/p&gt;


	&lt;p&gt;Route recognition also got a bunch faster thanks to the &lt;a href=&quot;https://github.com/rails/journey&quot;&gt;new Journey engine&lt;/a&gt; and we made linking much faster as well (especially apparent when you’re having 100+ links on a single page).&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Explain queries&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;We’ve added a &lt;a href=&quot;http://weblog.rubyonrails.org/2011/12/6/what-s-new-in-edge-rails-explain&quot;&gt;quick and easy way to explain quieries generated by ARel&lt;/a&gt;. In the console, you can run something like &lt;code&gt;puts Person.active.limit(5).explain&lt;/code&gt; and you’ll get the query ARel produces explained (so you can easily see whether its using the right indexes). There’s even a default threshold in development mode where if a query takes more than half a second to run, it’s automatically explained inline—how about that!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Tagged logger&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;When you’re running a multi-user, multi-account application, it’s a great help to be able to filter the log by who did what. Enter the TaggedLogging wrapper. It works like this:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
Logger.tagged(&quot;BCX&quot;) { Logger.info &quot;Stuff&quot; } # Logs &quot;[BCX] Stuff&quot; 
Logger.tagged(&quot;BCX&quot;) do
  Logger.tagged(&quot;Jason&quot;) do
    Logger.info &quot;Stuff&quot; # Logs &quot;\[BCX\] \[Jason\] Stuff&quot; 
  end
end&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;&lt;strong&gt;Active Record Store&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Key/value stores are great, but it’s not always you want to go the whole honking way just for a little variable-key action. Enter the Active Record Store:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;class User &amp;lt; ActiveRecord::Base
  store :settings, accessors: [ :color, :homepage ]
end&lt;/code&gt;&lt;/pre&gt;


	&lt;pre&gt;&lt;code&gt;u = User.new(color: 'black', homepage: '37signals.com')
u.color                          # Accessor stored attribute
u.settings[:country] = 'Denmark' # Any attribute, even if not specified with an accessor&lt;/code&gt;&lt;/pre&gt;</content:encoded>
	<dc:date>2012-01-20T18:36:35+00:00</dc:date>
	<dc:creator>David</dc:creator>
</item>
<item rdf:about="urn:uuid:b0ad9201-5e73-47b4-8a5a-f3330f9a7d86">
	<title>Nick Sieger: Letter to My Congresspeople Regarding SOPA/PIPA</title>
	<link>http://blog.nicksieger.com/articles/2012/01/13/letter-to-my-congresspeople-regarding-sopa-pipa</link>
	<content:encoded>&lt;p&gt;Dear Sen&amp;#46; Klobuchar, Sen&amp;#46; Franken, and Rep&amp;#46; Ellison,&lt;/p&gt;

&lt;p&gt;I am writing to express my deep concern about the pending SOPA/PIPA legislation&amp;#46; I have seen reports that Sen&amp;#46; Franken and Sen&amp;#46; Klobuchar are both in favor of this legislation&amp;#46; This troubles me&amp;#46;&lt;/p&gt;

&lt;p&gt;I see the intense legal pressure applied by the movie and recording industries to Congress as evidence that they simply don&amp;#8217;t understand how to run their businesses in an ever changing technological landscape&amp;#46; They should realize that they could &lt;a href=&quot;http://steveblank.com/2012/01/04/why-the-movie-industry-cant-innovate-and-the-result-is-sopa/&quot;&gt;increase revenues by embracing new channels of distribution&lt;/a&gt; instead of wasting time tracking lost revenues due to piracy or fraud&amp;#46;&lt;/p&gt;

&lt;p&gt;Based on this view, I see SOPA/PIPA as yet another misguided government attempt to intervene, prop up, and rescue an industry that doesn&amp;#8217;t know how to alter its own business models to align with the current economic and technological climate&amp;#46; This attempt comes at the expense of taxpayers and citizens who view freedom of speech and information as inherent, unalienable rights&amp;#46;&lt;/p&gt;

&lt;p&gt;Frankly, I find the amount of money raised for &lt;a href=&quot;http://sopatrack.com/congressperson/F000457-sen-al-franken&quot;&gt;Sen&amp;#46; Franken&lt;/a&gt; and &lt;a href=&quot;http://sopatrack.com/congressperson/K000367-sen-amy-klobuchar&quot;&gt;Sen&amp;#46; Klobuchar&lt;/a&gt; to be a disgusting example of special interests buying legislation&amp;#46; As a constituent of the the state of Minnesota and its fifth congressional district, I urge Sen&amp;#46; Franken, Sen&amp;#46; Klobuchar, and &lt;a href=&quot;http://sopatrack.com/congressperson/E000288-rep-keith-ellison&quot;&gt;Rep&amp;#46; Ellison&lt;/a&gt; to return all funds contributed for and against this legislation and to remove any support for this bill&amp;#46;&lt;/p&gt;

&lt;p&gt;Regards,&lt;/p&gt;

&lt;p&gt;Nick Sieger&lt;/p&gt;</content:encoded>
	<dc:date>2012-01-13T21:00:24+00:00</dc:date>
	<dc:creator>Nick Sieger</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2012-01-04:29804">
	<title>Ruby on Rails: Rails 3.2.0.rc2 has been released!</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/FVQsbdFRReI/rails-3-2-0-rc2-has-been-released</link>
	<content:encoded>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;Rails 3.2.0.rc2 has been released!&lt;/p&gt;

&lt;h2&gt;What to update in your apps&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Update your Gemfile to depend on rails ~&gt; 3.2.0.rc2&lt;/li&gt;
&lt;li&gt;Update your Gemfile to depend on sass-rails ~&gt; 3.2.3&lt;/li&gt;
&lt;li&gt;Start moving any remaining Rails 2.3-style &lt;code&gt;vendor/plugins/*&lt;/code&gt;. These are finally deprecated!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Extract your vendor/plugins to their own gems and bundle them in your Gemfile. If they're tiny, not worthy of the own gem, fold it into your app as &lt;code&gt;lib/myplugin/*&lt;/code&gt; and &lt;code&gt;config/initializers/myplugin.rb&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Changes since RC1&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;ActionMailer&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActionPack&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add font_path helper method &lt;strong&gt;Santiago Pastorino&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Depends on rack ~&gt; 1.4.0 &lt;strong&gt;Santiago Pastorino&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add :gzip option to &lt;code&gt;caches_page&lt;/code&gt;. The default option can be configured globally using &lt;code&gt;page_cache_compression&lt;/code&gt; &lt;strong&gt;Andrey Sitnik&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveModel&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveRecord&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveResource&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveSupport&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ActiveSupport::Base64 is deprecated in favor of ::Base64. &lt;strong&gt;Sergey Nartimov&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Railties&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Rails 2.3-style plugins in vendor/plugins are deprecated and will be removed in Rails 4.0. Move them out of vendor/plugins and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. &lt;strong&gt;Santiago Pastorino&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Guides are available as a single .mobi for the Kindle and free Kindle readers apps. &lt;strong&gt;Michael Pearson &amp;amp; Xavier Noria&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow scaffold/model/migration generators to accept a &quot;index&quot; and &quot;uniq&quot; modifiers, as in: &quot;tracking_id:integer:uniq&quot; in order to generate (unique) indexes. Some types also accept custom options, for instance, you can specify the precision and scale for decimals as &quot;price:decimal{7,2}&quot;. &lt;strong&gt;Dmitrii Samoilov&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Gem checksums&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;MD5 (actionmailer-3.2.0.rc2.gem) = 118c83b2cddaa935d1de7534cfb6c810&lt;/li&gt;
&lt;li&gt;MD5 (actionpack-3.2.0.rc2.gem) = 6b18851bc26d5c8958672f27adda05ca&lt;/li&gt;
&lt;li&gt;MD5 (activemodel-3.2.0.rc2.gem) = d82f4eed949dcff17f8bf2aed806679a&lt;/li&gt;
&lt;li&gt;MD5 (activerecord-3.2.0.rc2.gem) = d07806fd5fc464f960200d20ceb2193a&lt;/li&gt;
&lt;li&gt;MD5 (activeresource-3.2.0.rc2.gem) = f51af240ff4623b0b6f8a4293ffa50dc&lt;/li&gt;
&lt;li&gt;MD5 (activesupport-3.2.0.rc2.gem) = 01380240c12e0380c9e61c97dd45f2f1&lt;/li&gt;
&lt;li&gt;MD5 (rails-3.2.0.rc2.gem) = 134f923f7d821f514abf6bdf4af62ca7&lt;/li&gt;
&lt;li&gt;MD5 (railties-3.2.0.rc2.gem) = 4b3ac0f9c5da16b90a1875e8199253d2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find an exhaustive list of changes on &lt;a href=&quot;https://github.com/rails/rails/compare/v3.2.0.rc1...v3.2.0.rc2&quot;&gt;github&lt;/a&gt;. Along with the &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=3&amp;state=closed&quot;&gt;closed issues marked for v3.2.0&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can also see issues &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=3&amp;state=open&quot;&gt;we haven't closed yet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to everyone!&lt;/p&gt;</content:encoded>
	<dc:date>2012-01-04T22:12:09+00:00</dc:date>
	<dc:creator>spastorino</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-12-20:29722">
	<title>Ruby on Rails: Rails/master is now 4.0.0.beta</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/_XseWIh5yEQ/rails-master-is-now-4-0-0-beta</link>
	<content:encoded>&lt;p&gt;The &lt;a href=&quot;http://weblog.rubyonrails.org/2011/12/20/rails-3-2-rc1-faster-dev-mode-routing-explain-queries-tagged-logger-store&quot;&gt;forthcoming 3.2.x release series&lt;/a&gt; will be the last branch of Rails that supports Ruby 1.8.7. There’s a new &lt;a href=&quot;https://github.com/rails/rails/tree/3-2-stable&quot;&gt;3-2-stable branch&lt;/a&gt; in git to track the changes we need until 3.2.0 final is release and for managing point releases after that.&lt;/p&gt;


	&lt;p&gt;So for now you should stop floating on rails/master if your application is not compatible with Ruby 1.9.3. We have updated the version numbers to indicate this backwards incompatibility to be 4.0.0.beta. This doesn’t mean that 4.0 is anywhere close to being released, mind you. We’re simply doing this now because we’re dropping support for Ruby 1.8.7 in rails/master and people should know what’s up.&lt;/p&gt;


	&lt;p&gt;Major versions of Rails has been on about 2-year release cycle since 1.0 (&lt;a href=&quot;http://weblog.rubyonrails.org/2005/12/13/rails-1-0-party-like-its-one-oh-oh/&quot;&gt;released in 2005&lt;/a&gt;, &lt;a href=&quot;http://weblog.rubyonrails.org/2007/12/7/rails-2-0-it-s-done&quot;&gt;followed by 2.0 in 2007&lt;/a&gt;, &lt;a href=&quot;http://weblog.rubyonrails.org/2010/8/29/rails-3-0-it-s-done&quot;&gt;followed by 3.0 in 2010&lt;/a&gt;) and we intend to continue this pattern. The current internal target for Rails 4.0 is sometime in the Summer of 2012 &amp;mdash; but we have blown every major release estimate in the past, so don’t bet your farm on it.&lt;/p&gt;


	&lt;p&gt;There’s not a lot of details about what we’re going to include in Rails 4.0 yet as the primary purpose for bumping the major version number is to drop Ruby 1.8.7 support. But unlike Rails 3.0, we intend for it to be a much smoother transition. The intention is not for this to be a &lt;span class=&quot;caps&quot;&gt;REWRITE EVERYTHING&lt;/span&gt; release in the same way 3.0 was to some extent.&lt;/p&gt;


	&lt;p&gt;But we’re getting ahead of ourselves. First mission is to get Rails 3.2 out!&lt;/p&gt;</content:encoded>
	<dc:date>2011-12-20T16:06:41+00:00</dc:date>
	<dc:creator>David</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-12-20:29697">
	<title>Ruby on Rails: Rails 3.2 RC1: Faster dev mode &amp; routing, explain queries, tagged logger, store</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/1ar_9qnCEHw/rails-3-2-rc1-faster-dev-mode-routing-explain-queries-tagged-logger-store</link>
	<content:encoded>&lt;p&gt;Once you’ve boarded the Rails train, you just know that every stop along the way is going to be a good time. This release candidate is no different and we’ve packed it with loving goodies without making upgrading a hassle.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Faster dev mode &amp;amp; routing&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;The most noticeable new feature is that development mode got a ton and a half faster. Inspired by &lt;a href=&quot;https://github.com/paneq/active_reload&quot;&gt;Active Reload&lt;/a&gt;, we now only reload classes from files you’ve actually changed. The difference is dramatic on a larger application.&lt;/p&gt;


	&lt;p&gt;Route recognition also got a bunch faster thanks to the &lt;a href=&quot;https://github.com/rails/journey&quot;&gt;new Journey engine&lt;/a&gt; and we made linking much faster as well (especially apparent when you’re having 100+ links on a single page).&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Explain queries&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;We’ve added a &lt;a href=&quot;http://weblog.rubyonrails.org/2011/12/6/what-s-new-in-edge-rails-explain&quot;&gt;quick and easy way to explain quieries generated by ARel&lt;/a&gt;. In the console, you can run something like &lt;code&gt;puts Person.active.limit(5).explain&lt;/code&gt; and you’ll get the query ARel produces explained (so you can easily see whether its using the right indexes). There’s even a default threshold in development mode where if a query takes more than half a second to run, it’s automatically explained inline—how about that!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Tagged logger&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;When you’re running a multi-user, multi-account application, it’s a great help to be able to filter the log by who did what. Enter the TaggedLogging wrapper. It works like this:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
Logger.tagged(&quot;BCX&quot;) { Logger.info &quot;Stuff&quot; } # Logs &quot;[BCX] Stuff&quot; 
Logger.tagged(&quot;BCX&quot;) do
  Logger.tagged(&quot;Jason&quot;) do
    Logger.info &quot;Stuff&quot; # Logs &quot;\[BCX\] \[Jason\] Stuff&quot; 
  end
end&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;&lt;strong&gt;Active Record Store&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Key/value stores are great, but it’s not always you want to go the whole honking way just for a little variable-key action. Enter the Active Record Store:&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;class User &amp;lt; ActiveRecord::Base
  store :settings, accessors: [ :color, :homepage ]
end&lt;/code&gt;&lt;/pre&gt;


	&lt;pre&gt;&lt;code&gt;u = User.new(color: 'black', homepage: '37signals.com')
u.color                          # Accessor stored attribute
u.settings[:country] = 'Denmark' # Any attribute, even if not specified with an accessor&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;These are just a few of the highlights. The &lt;a href=&quot;https://gist.github.com/1472145&quot;&gt;full release notes&lt;/a&gt; detail every loving change.&lt;/p&gt;


	&lt;p&gt;Given that this is a release candidate, we’re ever so eager to hear your feedback. We hope it’ll be a quick RC phase, but please do spoil that plan by &lt;a href=&quot;https://github.com/rails/rails/issues&quot;&gt;reporting bugs&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;As always, you install a release candidate by doing &lt;code&gt;gem install rails --pre&lt;/code&gt;.&lt;/p&gt;</content:encoded>
	<dc:date>2011-12-20T00:48:09+00:00</dc:date>
	<dc:creator>David</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-12-06:29687">
	<title>Ruby on Rails: What's new in Edge Rails: EXPLAIN</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/_9AEzN2MToo/what-s-new-in-edge-rails-explain</link>
	<content:encoded>&lt;p&gt;There are some new features related to EXPLAIN in the forthcoming Ruby on Rails 3.2 we'd like
to share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running EXPLAIN manually&lt;/li&gt;
&lt;li&gt;Automatic EXPLAIN for slow queries&lt;/li&gt;
&lt;li&gt;Silencing automatic EXPLAIN&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As of this writing they are available for the adapters &lt;code&gt;sqlite3&lt;/code&gt;, &lt;code&gt;mysql2&lt;/code&gt;, and
&lt;code&gt;postgresql&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Running EXPLAIN Manually&lt;/h2&gt;

&lt;p&gt;You can now run EXPLAIN on the SQL generated by a relation this way:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;User.where(:id =&amp;gt; 1).joins(:posts).explain
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The result of that method call is a string that carefully imitates the output of
database shells. For example, under MySQL you get something similar to&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;EXPLAIN for: SELECT `users`.* FROM `users` INNER JOIN `posts` ON `posts`.`user_id` = `users`.`id` WHERE `users`.`id` = 1
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
| id | select_type | table | type  | possible_keys | key     | key_len | ref   | rows | Extra       |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
|  1 | SIMPLE      | users | const | PRIMARY       | PRIMARY | 4       | const |    1 |             |
|  1 | SIMPLE      | posts | ALL   | NULL          | NULL    | NULL    | NULL  |    1 | Using where |
+----+-------------+-------+-------+---------------+---------+---------+-------+------+-------------+
2 rows in set (0.00 sec)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and under PostgreSQL the same call yields something like&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;EXPLAIN for: SELECT &quot;users&quot;.* FROM &quot;users&quot; INNER JOIN &quot;posts&quot; ON &quot;posts&quot;.&quot;user_id&quot; = &quot;users&quot;.&quot;id&quot; WHERE &quot;users&quot;.&quot;id&quot; = 1
                                  QUERY PLAN
------------------------------------------------------------------------------
 Nested Loop Left Join  (cost=0.00..37.24 rows=8 width=0)
   Join Filter: (posts.user_id = users.id)
   -&amp;gt;  Index Scan using users_pkey on users  (cost=0.00..8.27 rows=1 width=4)
         Index Cond: (id = 1)
   -&amp;gt;  Seq Scan on posts  (cost=0.00..28.88 rows=8 width=4)
         Filter: (posts.user_id = 1)
(6 rows)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Please note that &lt;code&gt;explain&lt;/code&gt; &lt;strong&gt;runs&lt;/strong&gt; the query or queries and asks the
database for their respective query plan afterwards. This is because due to eager loading a relation may trigger several queries to fetch the records and their associations, and in such cases some queries need the result of
the previous ones.&lt;/p&gt;

&lt;p&gt;If the relation triggers several queries the method still returns a single
string with all the query plans. This is an output meant for human consumption so we preferred to present
everything as a string in a format which is familiar right away rather than a structure.&lt;/p&gt;

&lt;h2&gt;Automatic EXPLAIN For Slow Queries&lt;/h2&gt;

&lt;p&gt;Rails 3.2 has the ability to help in detecting slow queries.&lt;/p&gt;

&lt;p&gt;New applications get&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;config.active_record.auto_explain_threshold_in_seconds = 0.5
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;in &lt;em&gt;config/environments/development.rb&lt;/em&gt;. Active Record monitors queries and if
they take more than that threshold their query plan will be logged using &lt;code&gt;warn&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That works for anything running &lt;code&gt;find_by_sql&lt;/code&gt; (which is almost everything, since
most of Active Record ends up calling that method). In the particular case of
relations, the threshold is compared against the total time needed to fetch the
records, not against the time taken by each individual query. Because
conceptually we are concerned with the cost of the call&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;User.where(:id =&amp;gt; 1).joins(:posts).explain
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;rather than the cost of the different queries that call may trigger due to the
implementation.&lt;/p&gt;

&lt;p&gt;By default the threshold is &lt;code&gt;nil&lt;/code&gt; in the test and production environments, which
means the feature is disabled.&lt;/p&gt;

&lt;p&gt;The value of that parameter is &lt;code&gt;nil&lt;/code&gt; also if the threshold is not set, so
existing applications will need to add it by hand if they migrate to 3.2 to be
able to enable automatic EXPLAIN.&lt;/p&gt;

&lt;h2&gt;Silencing Automatic EXPLAIN&lt;/h2&gt;

&lt;p&gt;With automatic EXPLAIN enabled, it could still be the case that some queries are
just slow and you know they have to be. For example, a heavyweight report in the
backoffice.&lt;/p&gt;

&lt;p&gt;The macro &lt;code&gt;silence_auto_explain&lt;/code&gt; allows you to avoid having EXPLAIN run
repeatedly in those areas of code:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ActiveRecord::Base.silence_auto_explain do
  # no automatic EXPLAIN here
end
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Interpreting Query Plans&lt;/h2&gt;

&lt;p&gt;The interpretation of the query plans is another topic, these are some pointers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQLite: &lt;a href=&quot;http://www.sqlite.org/eqp.html&quot;&gt;EXPLAIN QUERY PLAN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;MySQL: &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.6/en/explain-output.html&quot;&gt;EXPLAIN Output Format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PostgreSQL: &lt;a href=&quot;http://www.postgresql.org/docs/current/static/using-explain.html&quot;&gt;Using EXPLAIN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy debugging!&lt;/p&gt;</content:encoded>
	<dc:date>2011-12-07T11:23:43+00:00</dc:date>
	<dc:creator>fxn</dc:creator>
</item>
<item rdf:about="http://oreilly.com/catalog/9781449304232/">
	<title>O'Reilly Ruby: Sinatra: Up and Running</title>
	<link>http://feeds.oreilly.com/~r/oreilly/ruby/~3/wwKqEHtOfN4/</link>
	<content:encoded>&lt;a href=&quot;http://oreilly.com/catalog/9781449304232/&quot;&gt;&lt;img src=&quot;http://covers.oreilly.com/images/9781449304232/bkt.gif&quot; /&gt;&lt;/a&gt;&lt;p&gt;Take advantage of Sinatra, the Ruby-based web application library and domain-specific language used by GitHub, LinkedIn, Engine Yard, and other prominent organizations. With this concise book, you will quickly gain working knowledge of Sinatra and its minimalist approach to building both standalone and modular web applications.&lt;/p&gt;
	&lt;img src=&quot;http://feeds.feedburner.com/~r/oreilly/ruby/~4/wwKqEHtOfN4&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2011-11-24T20:33:07+00:00</dc:date>
	<dc:creator>Konstantin Haase, Alan Harris</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-11-20:29652">
	<title>Ruby on Rails: Rails 3.1.3 has been released</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/EmdZSBFjb_U/rails-3-1-3-has-been-released</link>
	<content:encoded>&lt;p&gt;Rails 3.1.3 has been released. This release mainly contains fixes for regressions that popped up in 3.1.2.&lt;/p&gt;

&lt;h2&gt;Changes&lt;/h2&gt;

&lt;p&gt;Action Pack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Downgrade sprockets to ~&gt; 2.0.3. Using 2.1.0 caused regressions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix using &lt;code&gt;translate&lt;/code&gt; helper with a html translation which uses the &lt;code&gt;:count&lt;/code&gt; option for pluralization.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jon Leighton&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Perf fix: If we're deleting all records in an association, don't add a IN(..) clause to the query. &lt;em&gt;GH 3672&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jon Leighton&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix bug with referencing other mysql databases in set&lt;em&gt;table&lt;/em&gt;name. &lt;em&gt;GH 3690&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix performance bug with mysql databases on a server with lots of other databses. &lt;em&gt;GH 3678&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Christos Zisopoulos and Kenny J&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Railties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New apps should be generated with a sass-rails dependency of 3.1.5, not 3.1.5.rc.2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As ever, you can see &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.2...v3.1.3&quot;&gt;a full list of changes&lt;/a&gt; on Github.&lt;/p&gt;</content:encoded>
	<dc:date>2011-11-20T23:14:51+00:00</dc:date>
	<dc:creator>jonleighton</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-11-18:29621">
	<title>Ruby on Rails: Rails 3.1.2 has been released</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/TBib444xHv8/rails-3-1-2-has-been-released</link>
	<content:encoded>&lt;p&gt;Rails 3.1.2 has been released. This is a patch-level release containing bug fixes and an important security fix.&lt;/p&gt;

&lt;h2&gt;Possible XSS vulnerability in the translate helper method in Ruby on Rails&lt;/h2&gt;

&lt;p&gt;There is a vulnerability in the translate helper method which may allow an attacker to insert arbitrary code into a page.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Versions Affected&lt;/strong&gt;: 3.0.0 and later, 2.3.X in combination with the rails_xss plugin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not Affected&lt;/strong&gt;:      Pre-3.0.0 releases, without the rails_xss plugin, did no automatic XSS escaping, so are not considered vulnerable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed Versions&lt;/strong&gt;:    3.0.11, 3.1.2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please see &lt;a href=&quot;http://groups.google.com/group/rubyonrails-security/browse_thread/thread/2b61d70fb73c7cc5&quot;&gt;the rubyonrails-security posting&lt;/a&gt; and the changelog item below, for more details.&lt;/p&gt;

&lt;h2&gt;Changes&lt;/h2&gt;

&lt;p&gt;Action Mailer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Action Pack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fix XSS security vulnerability in the &lt;code&gt;translate&lt;/code&gt; helper method. When using interpolation
in combination with HTML-safe translations, the interpolated input would not get HTML
escaped. &lt;em&gt;GH 3664&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before:&lt;/p&gt;

&lt;p&gt;translate('foo_html', :something =&amp;gt; '&amp;lt;script&amp;gt;') # =&amp;gt; &quot;...&amp;lt;script&amp;gt;...&quot;&lt;/p&gt;

&lt;p&gt;After:&lt;/p&gt;

&lt;p&gt;translate('foo_html', :something =&amp;gt; '&amp;lt;script&amp;gt;') # =&amp;gt; &quot;...&amp;amp;lt;script&amp;amp;gt;...&quot;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sergey Nartimov&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upgrade sprockets dependency to ~&gt; 2.1.0&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure that the format isn't applied twice to the cache key, else it becomes impossible to target with expire_action.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Christopher Meiklejohn&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Swallow error when can't unmarshall object from session.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Bruno Zanchet&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement a workaround for a bug in ruby-1.9.3p0 where an error would be raised while attempting to convert a template from one encoding to another.&lt;/p&gt;

&lt;p&gt;Please see &lt;a href=&quot;http://redmine.ruby-lang.org/issues/5564&quot;&gt;http://redmine.ruby-lang.org/issues/5564&lt;/a&gt; for details of the bug.&lt;/p&gt;

&lt;p&gt;The workaround is to load all conversions into memory ahead of time, and will only happen if the ruby version is &lt;em&gt;exactly&lt;/em&gt; 1.9.3p0. The hope is obviously that the underlying problem will be resolved in the next patchlevel release of 1.9.3.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jon Leighton&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure users upgrading from 3.0.x to 3.1.x will properly upgrade their flash object in session (issues #3298 and #2509)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fix problem with prepared statements and PostgreSQL when multiple schemas are used.
&lt;em&gt;GH #3232&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Juan M. Cuello&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix bug with PostgreSQLAdapter#indexes. When the search path has multiple schemas, spaces
were not being stripped from the schema names after the first.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sean Kirby&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Preserve SELECT columns on the COUNT for finder_sql when possible. &lt;em&gt;GH 3503&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Justin Mazzi&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reset prepared statement cache when schema changes impact statement results. &lt;em&gt;GH 3335&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Aaron Patterson&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Postgres: Do not attempt to deallocate a statement if the connection is no longer active.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ian Leitch&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Prevent QueryCache leaking database connections. &lt;em&gt;GH 3243&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mark J. Titorenko&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix bug where building the conditions of a nested through association could potentially
modify the conditions of the through and/or source association. If you have experienced
bugs with conditions appearing in the wrong queries when using nested through associations,
this probably solves your problems. &lt;em&gt;GH #3271&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jon Leighton&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If a record is removed from a has_many :through, all of the join records relating to that
record should also be removed from the through association's target.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jon Leighton&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix adding multiple instances of the same record to a has_many :through. &lt;em&gt;GH #3425&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jon Leighton&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix creating records in a through association with a polymorphic source type. &lt;em&gt;GH #3247&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jon Leighton&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;MySQL: use the information_schema than the describe command when we look for a primary key. &lt;em&gt;GH #3440&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Kenny J&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Resource:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Railties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Engines: don't blow up if db/seeds.rb is missing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Jeremy Kemper&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rails new foo --skip-test-unit&lt;/code&gt; should not add the &lt;code&gt;:test&lt;/code&gt; task to the rake default task.
&lt;em&gt;GH 2564&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;José Valim&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As ever, you can &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.1...v3.1.2&quot;&gt;see a full list of commits between the versions&lt;/a&gt; on Github.&lt;/p&gt;</content:encoded>
	<dc:date>2011-11-18T01:57:07+00:00</dc:date>
	<dc:creator>jonleighton</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-11-18:29622">
	<title>Ruby on Rails: Rails 3.0.11 has been released</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/gcr7aPe1kJg/rails-3-0-11-has-been-released</link>
	<content:encoded>&lt;p&gt;Rails 3.0.11 has been released. This is a patch-level release containing bug fixes and an important security fix.&lt;/p&gt;

&lt;h2&gt;Possible XSS vulnerability in the translate helper method in Ruby on Rails&lt;/h2&gt;

&lt;p&gt;There is a vulnerability in the translate helper method which may allow an attacker to insert arbitrary code into a page.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Versions Affected&lt;/strong&gt;: 3.0.0 and later, 2.3.X in combination with the rails_xss plugin&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Not Affected&lt;/strong&gt;:      Pre-3.0.0 releases, without the rails_xss plugin, did no automatic XSS escaping, so are not considered vulnerable&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fixed Versions&lt;/strong&gt;:    3.0.11, 3.1.2&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please see &lt;a href=&quot;http://groups.google.com/group/rubyonrails-security/browse_thread/thread/2b61d70fb73c7cc5&quot;&gt;the rubyonrails-security posting&lt;/a&gt; and the changelog item below, for more details.&lt;/p&gt;

&lt;h2&gt;Changes&lt;/h2&gt;

&lt;p&gt;Action Mailer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Action Pack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fix XSS security vulnerability in the &lt;code&gt;translate&lt;/code&gt; helper method. When using interpolation
in combination with HTML-safe translations, the interpolated input would not get HTML
escaped. &lt;em&gt;GH 3664&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before:&lt;/p&gt;

&lt;p&gt;translate('foo_html', :something =&amp;gt; '&amp;lt;script&amp;gt;') # =&amp;gt; &quot;...&amp;lt;script&amp;gt;...&quot;&lt;/p&gt;

&lt;p&gt;After:&lt;/p&gt;

&lt;p&gt;translate('foo_html', :something =&amp;gt; '&amp;lt;script&amp;gt;') # =&amp;gt; &quot;...&amp;amp;lt;script&amp;amp;gt;...&quot;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sergey Nartimov&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement a workaround for a bug in ruby-1.9.3p0 where an error would be
raised while attempting to convert a template from one encoding to another.&lt;/p&gt;

&lt;p&gt;Please see &lt;a href=&quot;http://redmine.ruby-lang.org/issues/5564&quot;&gt;http://redmine.ruby-lang.org/issues/5564&lt;/a&gt; for details of the bug.&lt;/p&gt;

&lt;p&gt;The workaround is to load all conversions into memory ahead of time, and will
only happen if the ruby version is exactly 1.9.3p0. The hope is obviously
that the underlying problem will be resolved in the next patchlevel release
of 1.9.3.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix assert_select_email to work on multipart and non-multipart emails as the method stopped working correctly in Rails 3.x due to changes in the new mail gem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix url_for when passed a hash to prevent additional options (eg. :host, :protocol) from being added to the hash after calling it.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Model:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Record:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Exceptions from database adapters should not lose their backtrace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Backport &quot;ActiveRecord::Persistence#touch should not use default_scope&quot; (GH #1519)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Psych errors with poor yaml formatting are proxied. Fixes GH #2645 and
GH #2731&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix ActiveRecord#exists? when passsed a nil value&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Resource:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Active Support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Railties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Updated Prototype UJS to lastest version fixing multiples errors in IE [Guillermo Iguaran]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As ever, you can &lt;a href=&quot;https://github.com/rails/rails/compare/v3.0.10...v3.0.11&quot;&gt;see a full list of commits between the versions&lt;/a&gt; on Github.&lt;/p&gt;</content:encoded>
	<dc:date>2011-11-18T01:55:13+00:00</dc:date>
	<dc:creator>jonleighton</dc:creator>
</item>
<item rdf:about="http://pragdave.blogs.pragprog.com/pragdave/2011/11/followup-on-the-email-experiment.html">
	<title>Dave Thomas: Followup on the EMail Experiment</title>
	<link>http://pragdave.blogs.pragprog.com/pragdave/2011/11/followup-on-the-email-experiment.html</link>
	<content:encoded>&lt;p&gt;&lt;span&gt;So the Hacker News folks are having a &lt;a href=&quot;http://news.ycombinator.com/item?id=3230233&quot; target=&quot;_self&quot; title=&quot;discussion&quot;&gt;discussion&lt;/a&gt; about my email experiment last April. Many interesting points were raised. One fair question is &amp;quot;how did the experiment work out?&amp;quot;&amp;#0160;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;In short, it worked incredibly well.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I was mostly worried about annoying the folks sending me email. But the only feedback I got was positive.&amp;#0160;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I was also a little worried about folks abusing the [urgent] flag. But that didn't happen, either. I had perhaps 5 or 6 urgent emails, and they were indeed things I needed to handle when I got back. Maybe I'm just lucky when it comes to the people who correspond with me.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The experiement had two positive effects on my life. First, the vacation was genuinely a lot nicer not having to worry about the sacks full of mail piling up for me when I got back. Was that selfish of me? Perhaps a little.&amp;#0160;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I wasn't expecting the other side effect. Since I returned from vacation, the quality of email I receive has improved, and the quantity I receive has dropped. I still enjoy interacting with all the people I need to interact with, and I still get to answer all the questions that need answering. It just seems that my inbox is somehow more focussed.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;I have a theory. I think that, during the course of the preceding few years, I'd become something of a slave to my email. I'd answer stuff as it arrived. And those rapid responses would in turn trigger another round of email, and another. There was almost an adreneline rush to it.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;So my vacation broke that cycle. And now things are sane (or at least closer to sane).&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;#0160;&lt;/p&gt;</content:encoded>
	<dc:date>2011-11-13T16:29:35+00:00</dc:date>
</item>
<item rdf:about="http://oreilly.com/catalog/9781449380373/">
	<title>O'Reilly Ruby: MacRuby: The Definitive Guide</title>
	<link>http://feeds.oreilly.com/~r/oreilly/ruby/~3/LCPtygT6nfA/</link>
	<content:encoded>&lt;a href=&quot;http://oreilly.com/catalog/9781449380373/&quot;&gt;&lt;img src=&quot;http://covers.oreilly.com/images/9781449380373/bkt.gif&quot; /&gt;&lt;/a&gt;Ruby and Cocoa on OS X, the iPhone, and the Device That Shall Not Be Named
	&lt;img src=&quot;http://feeds.feedburner.com/~r/oreilly/ruby/~4/LCPtygT6nfA&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</content:encoded>
	<dc:date>2011-10-28T20:43:05+00:00</dc:date>
	<dc:creator>Matt Aimonetti</dc:creator>
</item>
<item rdf:about="tag:blogger.com,1999:blog-4704664917418794835.post-1798238886261285117">
	<title>Charles Oliver Nutter: Why Clojure Doesn't Need Invokedynamic (Unless You Want It to be More Awesome)</title>
	<link>http://blog.headius.com/2011/10/why-clojure-doesnt-need-invokedynamic.html</link>
	<content:encoded>This was originally posted as a comment on &lt;a href=&quot;http://twitter.com/fogus&quot;&gt;@fogus&lt;/a&gt;'s blog post &quot;&lt;a href=&quot;http://blog.fogus.me/2011/10/14/why-clojure-doesnt-need-invokedynamic-but-it-might-be-nice/&quot;&gt;Why Clojure doesn’t need invokedynamic, but it might be nice&lt;/a&gt;&quot;. I figured it's worth a top-level post here.&lt;br /&gt;&lt;br /&gt;Ok, there's some good points here and a few misguided/misinformed positions. I'll try to cover everything.&lt;br /&gt;&lt;br /&gt;First, I need to point out a key detail of invokedynamic that may have escaped notice: any case where you must bounce through a generic piece of code to do dispatch -- regardless of how fast that bounce may be -- prevents a whole slew of optimizations from happening. This might affect Java dispatch, if there's any argument-twiddling logic shared between call sites. It would definitely affect multimethods, which are using a hand-implemented PIC. Any case where there's intervening code between the call site and the target would benefit from invokedynamic, since invokedynamic could be used to plumb that logic and let it inline straight through. This is, indeed, the primary benefit of using invokedynamic: arbitrarily complex dispatch logic folds away allowing the dispatch to optimize as if it were direct.&lt;br /&gt;&lt;br /&gt;Your point about inference in Java dispatch is a fair one...if Clojure is able to infer all cases, then there's no need to use invokedynamic at all. But unless Clojure is able to infer all cases, then you've got this little performance time bomb just waiting to happen. Tweak some code path and obscure the inference, and kablam, you're back on a slow reflective impl. Invokedynamic would provide a measure of consistency; the only unforeseen perf impact would be when the dispatch turns out to *actually* be polymorphic, in which case even a direct call wouldn't do much better.&lt;br /&gt;&lt;br /&gt;For multimethods, the benefit should be clear: the MM selection logic would be mostly implemented using method handles and &quot;leaf&quot; logic, allowing hotspot to inline it everywhere it is used. That means for small-morphic MM call sites, all targets could potentially inline too. That's impossible without invokedynamic unless you generate every MM path immediately around the eventual call.&lt;br /&gt;&lt;br /&gt;Now, on to defs and Var lookup. Depending on the cost of Var lookup, using a SwitchPoint-based invalidation plus invokedynamic could be a big win. In Java 7u2, SwitchPoint-based invalidation is essentially free until invalidated, and as you point out that's a rare case. There would essentially be *no* cost in indirecting through a var until that var changes...and then it would settle back into no cost until it changes again. Frequently-changing vars could gracefully degrade to a PIC.&lt;br /&gt;&lt;br /&gt;It's also dangerous to understate the impact code size has on JVM optimization. The usual recommendation on the JVM is to move code into many small methods, possibly using call-through logic as in multimethods to reuse the same logic in many places. As I've mentioned, that defeats many optimizations, so the next approach is often to hand-inline logic everywhere it's used, to let the JVM have a more optimizable view of the system. But now we're stepping on our own feet...by adding more bytecode, we're almost certainly impacting the JVM's optimization and inlining budgets.&lt;br /&gt;&lt;br /&gt;OpenJDK (and probably the other VMs too) has various limits on how far it will go to optimize code. A large number of these limits are based on the bytecoded size of the target methods. Methods that get too big won't inline, and sometimes won't compile. Methods that inline a lot of code might not get inlined into other methods. Methods that inline one path and eat up too much budget might push out more important calls later on. The only way around this is to reduce bytecode size, which is where invokedynamic comes in.&lt;br /&gt;&lt;br /&gt;As of OpenJDK 7u2, MethodHandle logic is not included when calculating inlining budgets. In other words, if you push all the Java dispatch logic or multimethod dispatch logic or var lookup into mostly MethodHandles, you're getting that logic *for free*. That has had a tremendous impact on JRuby performance; I had previous versions of our compiler that did indeed infer static target methods from the interpreter, but they were often *slower* than call site caching solely because the code was considerably larger. With invokedynamic, a call is a call is a call, and the intervening plumbing is not counted against you.&lt;br /&gt;&lt;br /&gt;Now, what about negative impacts to Clojure itself...&lt;br /&gt;&lt;br /&gt;#0 is a red herring. JRuby supports Java 5, 6, and 7 with only a few hundred lines of changes in the compiler. Basically, the compiler has abstract interfaces for doing things like constant lookup, literal loading, and dispatch that we simply reimplement to use invokedynamic (extending the old non-indy logic for non-indified paths). In order to compile our uses of invokedynamic, we use Rémi Forax's JSR-292 backport, which includes a &quot;mock&quot; jar with all the invokedynamic APIs stubbed out. In our release, we just leave that library out, reflectively load the invokedynamic-based compiler impls, and we're off to the races.&lt;br /&gt;&lt;br /&gt;#1 would be fair if the Oracle Java 7u2 early-access drops did not already include the optimizations that gave JRuby those awesome numbers. The biggest of those optimizations was making SwitchPoint free, but also important are the inlining discounting and MutableCallSite improvements. The perf you see for JRuby there can apply to any indirected behavior in Clojure, with the same perf benefits as of 7u2.&lt;br /&gt;&lt;br /&gt;For #2, to address the apparent vagueness in &lt;a href=&quot;http://blog.headius.com/2011/08/invokedynamic-in-jruby-constant-lookup.html&quot;&gt;my blog post&lt;/a&gt;...the big perf gain was largely from using SwitchPoint to invalidate constants rather than pinging a global serial number. Again, indirection folds away if you can shove it into MethodHandles. And it's pretty easy to do it.&lt;br /&gt;&lt;br /&gt;#3 is just plain FUD. Oracle has committed to making invokedynamic work well for Java too. The current thinking is that &quot;lambda&quot;, the support for closures in Java 7, will use invokedynamic under the covers to implement &quot;function-like&quot; constructs. Oracle has also committed to Nashorn, a fully invokedynamic-based JavaScript implementation, which has many of the same challenges as languages like Ruby or Python. I talked with Adam Messinger at Oracle, who explained to me that Oracle chose JavaScript in part because it's so far away from Java...as I put it (and he agreed) it's going to &quot;keep Oracle honest&quot; about optimizing for non-Java languages. Invokedynamic is driving the future of the JVM, and Oracle knows it all too well.&lt;br /&gt;&lt;br /&gt;As for #4...well, all good things take a little effort :) I think the effort required is far lower than you suspect, though.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/4704664917418794835-1798238886261285117?l=blog.headius.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content:encoded>
	<dc:date>2011-10-14T14:40:29+00:00</dc:date>
	<dc:creator>Charles Oliver Nutter</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-10-07:29602">
	<title>Ruby on Rails: Rails 3.1.1 has been released!</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/SF-F9PsU9bM/ann-rails-3-1-1</link>
	<content:encoded>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;Rails 3.1.1 has been released. &lt;strong&gt;This release requires at least sass-rails 3.1.4&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;CHANGES&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;ActionMailer&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActionPack&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;stylesheet&lt;em&gt;link&lt;/em&gt;tag('/stylesheets/application') and similar helpers doesn't
throw Sprockets::FileOutsidePaths exception anymore [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure default&lt;em&gt;asset&lt;/em&gt;host_protocol is respected, closes #2980. [José Valim]&lt;/p&gt;

&lt;p&gt;Changing rake db:schema:dump to run :environment as well as :load_config,
as running :load_config alone will lead to the dumper being run without
including extensions such as those included in foreigner and
spatial_adapter.&lt;/p&gt;

&lt;p&gt;This reverses a change made here:
https://github.com/rails/rails/commit/5df72a238e9fcb18daf6ab6e6dc9051c9106d7bb#L0L324&lt;/p&gt;

&lt;p&gt;I'm assuming here that :load_config needs to be invoked
separately from :environment, as it is elsewhere in the
file for db operations, if not the alternative is to go
back to &quot;task :dump =&gt; :environment do&quot;.&lt;/p&gt;

&lt;p&gt;[Ben Woosley]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update to rack-cache 1.1.&lt;/p&gt;

&lt;p&gt;Versions prior to 1.1 delete the If-Modified-Since and If-Not-Modified
headers when config.action&lt;em&gt;controller.perform&lt;/em&gt;caching is true. This has two
problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unexpected inconsistent behaviour between development &amp;amp;
production environments&lt;/li&gt;
&lt;li&gt;breaks applications that use of these headers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[Brendan Ribera]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure that enhancements to assets:precompile task are only run once [Sam Pohlenz]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TestCase should respect the view_assigns API instead of pulling variables on
its own. [José Valim]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;javascript&lt;em&gt;path and stylesheet&lt;/em&gt;path now refer to /assets if asset pipelining
is on. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;button_to support form option. Now you're able to pass for example
'data-type' =&gt; 'json'. [ihower]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;image&lt;em&gt;path and image&lt;/em&gt;tag should use /assets if asset pipelining is turned
on. Closes #3126 [Santiago Pastorino and christos]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid use of existing precompiled assets during rake assets:precompile run.
Closes #3119 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy assets to nondigested filenames too [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give precedence to &lt;code&gt;config.digest = false&lt;/code&gt; over the existence of
manifest.yml asset digests [christos]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;escape options for the stylesheet&lt;em&gt;link&lt;/em&gt;tag method [Alexey Vakhov]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Re-launch assets:precompile task using (Rake.)ruby instead of Kernel.exec so
it works on Windows [cablegram]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;env var passed to process shouldn't be modified in process method. [Santiago
Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rake assets:precompile&lt;/code&gt; loads the application but does not initialize
it.&lt;/p&gt;

&lt;p&gt;To the app developer, this means configuration add in
config/initializers/* will not be executed.&lt;/p&gt;

&lt;p&gt;&lt;p&gt;Plugins developers need to special case their initializers that are
meant to be run in the assets group by adding :group =&gt; :assets. [José Valim]&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sprockets uses config.assets.prefix for asset_path [asee]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FileStore key&lt;em&gt;file&lt;/em&gt;path properly limit filenames to 255 characters. [phuibonhoa]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix Hash#to&lt;em&gt;query edge case with html&lt;/em&gt;safe strings. [brainopia]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow asset tag helper methods to accept :digest =&gt; false option in order to completely avoid the digest generation.
Useful for linking assets from static html files or from emails when the user
could probably look at an older html email with an older asset. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't mount Sprockets server at config.assets.prefix if config.assets.compile is false. [Mark J. Titorenko]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set relative url root in assets when controller isn't available for Sprockets (eg. Sass files using asset_path). Fixes #2435 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix basic auth credential generation to not make newlines. GH #2882&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed the behavior of asset pipeline when config.assets.digest and config.assets.compile are false and requested asset isn't precompiled.
Before the requested asset were compiled anyway ignoring that the config.assets.compile flag is false. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CookieJar is now Enumerable. Fixes #2795&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed AssetNotPrecompiled error raised when rake assets:precompile is compiling certain .erb files. See GH #2763 #2765 #2805 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manifest is correctly placed in assets path when default assets prefix is changed. Fixes #2776 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed stylesheet&lt;em&gt;link&lt;/em&gt;tag and javascript&lt;em&gt;include&lt;/em&gt;tag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix ActiveRecord#exists? when passsed a nil value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix assert&lt;em&gt;select&lt;/em&gt;email to work on multipart and non-multipart emails as the method stopped working correctly in Rails 3.x due to changes in the new mail gem.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;em&gt;ActiveModel&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Remove hard dependency on bcrypt-ruby to avoid make ActiveModel dependent on a binary library.
You must add the gem explicitly to your Gemfile if you want use ActiveModel::SecurePassword:&lt;/p&gt;

&lt;p&gt;gem 'bcrypt-ruby', '~&gt; 3.0.0'&lt;/p&gt;

&lt;p&gt;See GH #2687. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveRecord&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add deprecation for the preload_associations method. Fixes #3022.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't require a DB connection when loading a model that uses set&lt;em&gt;primary&lt;/em&gt;key. GH #2807.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix using select() with a habtm association, e.g. Person.friends.select(:name). GH #3030 and #2923.&lt;/p&gt;

&lt;p&gt;[Hendy Tanata]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix belongs_to polymorphic with custom primary key on target. GH #3104.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CollectionProxy#replace should change the DB records rather than just mutating the array.
Fixes #3020.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LRU cache in mysql and sqlite are now per-process caches.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/mysql_adapter.rb: LRU cache
keys are per process id.&lt;/li&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/sqlite_adapter.rb: ditto&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Database adapters use a statement pool for limiting the number of open
prepared statments on the database.  The limit defaults to 1000, but can
be adjusted in your database config by changing 'statement_limit'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix clash between using 'preload', 'joins' or 'eager_load' in a default scope and including the
default scoped model in a nested through association. (GH #2834.) [Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure we are not comparing a string with a symbol in HasManyAssociation#inverse&lt;em&gt;updates&lt;/em&gt;counter_cache?.
Fixes GH #2755, where a counter cache could be decremented twice as far as it was supposed to be.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't send any queries to the database when the foreign key of a belongs_to is nil. Fixes
GH #2828. [Georg Friedrich]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed find&lt;em&gt;in_batches method to not include order from default&lt;/em&gt;scope. See GH #2832 [Arun Agrawal]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't compute table name for abstract classes. Fixes problem with setting the primary key
in an abstract class. See GH #2791. [Akira Matsuda]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Psych errors with poor yaml formatting are proxied. Fixes GH #2645 and
GH #2731&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the LIMIT word with the methods #last and #first. Fixes GH #2783 [Damien Mathieu]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveResource&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveSupport&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ruby193: String#prepend is also unsafe [Akira Matsuda]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix obviously breakage of Time.=== for Time subclasses [jeremyevans]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added fix so that file store does not raise an exception when cache dir does
not exist yet. This can happen if a delete_matched is called before anything
is saved in the cache. [Philippe Huibonhoa]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed performance issue where TimeZone lookups would require tzinfo each time [Tim Lucas]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ActiveSupport::OrderedHash is now marked as extractable when using Array#extract_options! [Prem Sichanugrist]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Railties&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add jquery-rails to Gemfile of plugins, test/dummy app needs it. Closes #3091. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rake assets:precompile&lt;/code&gt; loads the application but does not initialize it.&lt;/p&gt;

&lt;p&gt;To the app developer, this means configuration add in
config/initializers/* will not be executed.&lt;/p&gt;

&lt;p&gt;Plugins developers need to special case their initializers that are
meant to be run in the assets group by adding :group =&gt; :assets.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;SHA-1&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;9337cff7772da034b0b34b73b85cf249f1a70f52  actionmailer-3.1.1.gem&lt;/li&gt;
&lt;li&gt;7bb1b8d096a6ff1ff46dcfb778bf86a5daca1b0d  actionpack-3.1.1.gem&lt;/li&gt;
&lt;li&gt;d5dc71e1a9a0e20d819f4dff27ff0697e99a7f64  activemodel-3.1.1.gem&lt;/li&gt;
&lt;li&gt;7245632cb3b38612628304c1e244855d0053f7be  activerecord-3.1.1.gem&lt;/li&gt;
&lt;li&gt;6d09800202c2747e84249b8646f0fd480ed4924f  activeresource-3.1.1.gem&lt;/li&gt;
&lt;li&gt;66df2fd144aab22f52819fd489e33a976d68a46b  activesupport-3.1.1.gem&lt;/li&gt;
&lt;li&gt;6a35a49948bbd9f461839a1a271def90b23a851a  rails-3.1.1.gem&lt;/li&gt;
&lt;li&gt;6979ef891bd03fb639b979af9fdc56781f9358d9  railties-3.1.1.gem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find an exhaustive list of changes on &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.0...v3.1.1&quot;&gt;github&lt;/a&gt;. Along with the &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=6&amp;state=closed&quot;&gt;closed issues marked for v3.1.1&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to everyone!&lt;/p&gt;</content:encoded>
	<dc:date>2011-10-07T17:26:36+00:00</dc:date>
	<dc:creator>spastorino</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-10-06:29591">
	<title>Ruby on Rails: [ANN] Rails 3.1.1.rc3</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/WtD0HVd1JgU/ann-rails-3-1-1-rc3</link>
	<content:encoded>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;Rails 3.1.1.rc3 has been released. Please give it a try, it's our chance to fix regressions you might find and make a beautiful 3.1.1 stable release. If there are no regressions I will be releasing 3.1.1 final next October 7th. If you find any regression please contact me ASAP by email, twitter or github.&lt;/p&gt;

&lt;h2&gt;CHANGES&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;ActionMailer&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActionPack&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;stylesheet&lt;em&gt;link&lt;/em&gt;tag('/stylesheets/application') and similar helpers doesn't
throw Sprockets::FileOutsidePaths exception anymore [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure default&lt;em&gt;asset&lt;/em&gt;host_protocol is respected, closes #2980. [José Valim]&lt;/p&gt;

&lt;p&gt;Changing rake db:schema:dump to run :environment as well as :load_config,
as running :load_config alone will lead to the dumper being run without
including extensions such as those included in foreigner and
spatial_adapter.&lt;/p&gt;

&lt;p&gt;This reverses a change made here:
https://github.com/rails/rails/commit/5df72a238e9fcb18daf6ab6e6dc9051c9106d7bb#L0L324&lt;/p&gt;

&lt;p&gt;I'm assuming here that :load_config needs to be invoked
separately from :environment, as it is elsewhere in the
file for db operations, if not the alternative is to go
back to &quot;task :dump =&gt; :environment do&quot;.&lt;/p&gt;

&lt;p&gt;[Ben Woosley]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Update to rack-cache 1.1.&lt;/p&gt;

&lt;p&gt;Versions prior to 1.1 delete the If-Modified-Since and If-Not-Modified
headers when config.action&lt;em&gt;controller.perform&lt;/em&gt;caching is true. This has two
problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unexpected inconsistent behaviour between development &amp;amp;
production environments&lt;/li&gt;
&lt;li&gt;breaks applications that use of these headers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;[Brendan Ribera]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure that enhancements to assets:precompile task are only run once [Sam Pohlenz]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TestCase should respect the view_assigns API instead of pulling variables on
its own. [José Valim]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;javascript&lt;em&gt;path and stylesheet&lt;/em&gt;path now refer to /assets if asset pipelining
is on. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;button_to support form option. Now you're able to pass for example
'data-type' =&gt; 'json'. [ihower]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;image&lt;em&gt;path and image&lt;/em&gt;tag should use /assets if asset pipelining is turned
on. Closes #3126 [Santiago Pastorino and christos]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid use of existing precompiled assets during rake assets:precompile run.
Closes #3119 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Copy assets to nondigested filenames too [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Give precedence to &lt;code&gt;config.digest = false&lt;/code&gt; over the existence of
manifest.yml asset digests [christos]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;escape options for the stylesheet&lt;em&gt;link&lt;/em&gt;tag method [Alexey Vakhov]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Re-launch assets:precompile task using (Rake.)ruby instead of Kernel.exec so
it works on Windows [cablegram]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;env var passed to process shouldn't be modified in process method. [Santiago
Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rake assets:precompile&lt;/code&gt; loads the application but does not initialize
it.&lt;/p&gt;

&lt;p&gt;To the app developer, this means configuration add in
config/initializers/* will not be executed.&lt;/p&gt;

&lt;p&gt;&lt;p&gt;Plugins developers need to special case their initializers that are
meant to be run in the assets group by adding :group =&gt; :assets. [José Valim]&lt;/p&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sprockets uses config.assets.prefix for asset_path [asee]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;FileStore key&lt;em&gt;file&lt;/em&gt;path properly limit filenames to 255 characters. [phuibonhoa]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix Hash#to&lt;em&gt;query edge case with html&lt;/em&gt;safe strings. [brainopia]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Allow asset tag helper methods to accept :digest =&gt; false option in order to completely avoid the digest generation.
Useful for linking assets from static html files or from emails when the user
could probably look at an older html email with an older asset. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't mount Sprockets server at config.assets.prefix if config.assets.compile is false. [Mark J. Titorenko]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set relative url root in assets when controller isn't available for Sprockets (eg. Sass files using asset_path). Fixes #2435 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix basic auth credential generation to not make newlines. GH #2882&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed the behavior of asset pipeline when config.assets.digest and config.assets.compile are false and requested asset isn't precompiled.
Before the requested asset were compiled anyway ignoring that the config.assets.compile flag is false. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CookieJar is now Enumerable. Fixes #2795&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed AssetNotPrecompiled error raised when rake assets:precompile is compiling certain .erb files. See GH #2763 #2765 #2805 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manifest is correctly placed in assets path when default assets prefix is changed. Fixes #2776 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed stylesheet&lt;em&gt;link&lt;/em&gt;tag and javascript&lt;em&gt;include&lt;/em&gt;tag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix ActiveRecord#exists? when passsed a nil value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix assert&lt;em&gt;select&lt;/em&gt;email to work on multipart and non-multipart emails as the method stopped working correctly in Rails 3.x due to changes in the new mail gem.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;em&gt;ActiveModel&lt;/em&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Remove hard dependency on bcrypt-ruby to avoid make ActiveModel dependent on a binary library.
You must add the gem explicitly to your Gemfile if you want use ActiveModel::SecurePassword:&lt;/p&gt;

&lt;p&gt;gem 'bcrypt-ruby', '~&gt; 3.0.0'&lt;/p&gt;

&lt;p&gt;See GH #2687. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveRecord&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add deprecation for the preload_associations method. Fixes #3022.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't require a DB connection when loading a model that uses set&lt;em&gt;primary&lt;/em&gt;key. GH #2807.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix using select() with a habtm association, e.g. Person.friends.select(:name). GH #3030 and&lt;/p&gt;

&lt;h1&gt;2923.&lt;/h1&gt;

&lt;p&gt;[Hendy Tanata]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix belongs_to polymorphic with custom primary key on target. GH #3104.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CollectionProxy#replace should change the DB records rather than just mutating the array.
Fixes #3020.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LRU cache in mysql and sqlite are now per-process caches.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/mysql_adapter.rb: LRU cache
keys are per process id.&lt;/li&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/sqlite_adapter.rb: ditto&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Database adapters use a statement pool for limiting the number of open
prepared statments on the database.  The limit defaults to 1000, but can
be adjusted in your database config by changing 'statement_limit'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix clash between using 'preload', 'joins' or 'eager_load' in a default scope and including the
default scoped model in a nested through association. (GH #2834.) [Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure we are not comparing a string with a symbol in HasManyAssociation#inverse&lt;em&gt;updates&lt;/em&gt;counter_cache?.
Fixes GH #2755, where a counter cache could be decremented twice as far as it was supposed to be.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't send any queries to the database when the foreign key of a belongs_to is nil. Fixes
GH #2828. [Georg Friedrich]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed find&lt;em&gt;in_batches method to not include order from default&lt;/em&gt;scope. See GH #2832 [Arun Agrawal]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't compute table name for abstract classes. Fixes problem with setting the primary key
in an abstract class. See GH #2791. [Akira Matsuda]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Psych errors with poor yaml formatting are proxied. Fixes GH #2645 and
GH #2731&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the LIMIT word with the methods #last and #first. Fixes GH #2783 [Damien Mathieu]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveResource&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveSupport&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ruby193: String#prepend is also unsafe [Akira Matsuda]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix obviously breakage of Time.=== for Time subclasses [jeremyevans]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Added fix so that file store does not raise an exception when cache dir does
not exist yet. This can happen if a delete_matched is called before anything
is saved in the cache. [Philippe Huibonhoa]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed performance issue where TimeZone lookups would require tzinfo each time [Tim Lucas]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ActiveSupport::OrderedHash is now marked as extractable when using Array#extract_options! [Prem Sichanugrist]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Railties&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add jquery-rails to Gemfile of plugins, test/dummy app needs it. Closes #3091. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rake assets:precompile&lt;/code&gt; loads the application but does not initialize it.&lt;/p&gt;

&lt;p&gt;To the app developer, this means configuration add in
config/initializers/* will not be executed.&lt;/p&gt;

&lt;p&gt;Plugins developers need to special case their initializers that are
meant to be run in the assets group by adding :group =&gt; :assets.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find an exhaustive list of changes on &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.0...v3.1.1.rc3&quot;&gt;github&lt;/a&gt;. Along with the &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=6&amp;state=closed&quot;&gt;closed issues marked for v3.1.1&lt;/a&gt;. You can also take a look to what's new between &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.1.rc2...v3.1.1.rc3&quot;&gt;v3.1.1.rc2 and v3.1.1.rc3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also see issues &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=8&amp;state=open&quot;&gt;we haven't closed yet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to everyone!&lt;/p&gt;</content:encoded>
	<dc:date>2011-10-06T02:34:07+00:00</dc:date>
	<dc:creator>spastorino</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-09-29:29575">
	<title>Ruby on Rails: [ANN] Rails 3.1.1.rc2</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/qVrSFXrXeHM/ann-rails-3-1-1-rc2</link>
	<content:encoded>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;Rails 3.1.1.rc2 has been released. Please give it a try, it's our chance to fix regressions you might find and make a beautiful 3.1.1 stable release. If there are no regressions I will be releasing 3.1.1 final next October 3rd. If you find any regression please contact me ASAP by email, twitter or github.&lt;/p&gt;

&lt;h2&gt;CHANGES&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;ActionMailer&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActionPack&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Allow asset tag helper methods to accept :digest =&gt; false option in order to completely avoid the digest generation.
Useful for linking assets from static html files or from emails when the user
could probably look at an older html email with an older asset. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't mount Sprockets server at config.assets.prefix if config.assets.compile is false. [Mark J. Titorenko]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set relative url root in assets when controller isn't available for Sprockets (eg. Sass files using asset_path). Fixes #2435 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix basic auth credential generation to not make newlines. GH #2882&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed the behavior of asset pipeline when config.assets.digest and config.assets.compile are false and requested asset isn't precompiled.
Before the requested asset were compiled anyway ignoring that the config.assets.compile flag is false. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CookieJar is now Enumerable. Fixes #2795&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed AssetNotPrecompiled error raised when rake assets:precompile is compiling certain .erb files. See GH #2763 #2765 #2805 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manifest is correctly placed in assets path when default assets prefix is changed. Fixes #2776 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed stylesheet&lt;em&gt;link&lt;/em&gt;tag and javascript&lt;em&gt;include&lt;/em&gt;tag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix ActiveRecord#exists? when passsed a nil value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix assert&lt;em&gt;select&lt;/em&gt;email to work on multipart and non-multipart emails as the method stopped working correctly in Rails 3.x due to changes in the new mail gem.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveModel&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Remove hard dependency on bcrypt-ruby to avoid make ActiveModel dependent on a binary library.
You must add the gem explicitly to your Gemfile if you want use ActiveModel::SecurePassword:&lt;/p&gt;

&lt;p&gt;gem 'bcrypt-ruby', '~&gt; 3.0.0'&lt;/p&gt;

&lt;p&gt;See GH #2687. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveRecord&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add deprecation for the preload_associations method. Fixes #3022.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't require a DB connection when loading a model that uses set&lt;em&gt;primary&lt;/em&gt;key. GH #2807.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix using select() with a habtm association, e.g. Person.friends.select(:name). GH #3030 and&lt;/p&gt;

&lt;h1&gt;2923.&lt;/h1&gt;

&lt;p&gt;[Hendy Tanata]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix belongs_to polymorphic with custom primary key on target. GH #3104.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CollectionProxy#replace should change the DB records rather than just mutating the array.
Fixes #3020.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;LRU cache in mysql and sqlite are now per-process caches.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/mysql_adapter.rb: LRU cache
keys are per process id.&lt;/li&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/sqlite_adapter.rb: ditto&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Database adapters use a statement pool for limiting the number of open
prepared statments on the database.  The limit defaults to 1000, but can
be adjusted in your database config by changing 'statement_limit'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix clash between using 'preload', 'joins' or 'eager_load' in a default scope and including the
default scoped model in a nested through association. (GH #2834.) [Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure we are not comparing a string with a symbol in HasManyAssociation#inverse&lt;em&gt;updates&lt;/em&gt;counter_cache?.
Fixes GH #2755, where a counter cache could be decremented twice as far as it was supposed to be.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't send any queries to the database when the foreign key of a belongs_to is nil. Fixes
GH #2828. [Georg Friedrich]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed find&lt;em&gt;in_batches method to not include order from default&lt;/em&gt;scope. See GH #2832 [Arun Agrawal]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't compute table name for abstract classes. Fixes problem with setting the primary key
in an abstract class. See GH #2791. [Akira Matsuda]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Psych errors with poor yaml formatting are proxied. Fixes GH #2645 and
GH #2731&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the LIMIT word with the methods #last and #first. Fixes GH #2783 [Damien Mathieu]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveResource&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveSupport&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fixed performance issue where TimeZone lookups would require tzinfo each time [Tim Lucas]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ActiveSupport::OrderedHash is now marked as extractable when using Array#extract_options! [Prem Sichanugrist]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Railties&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add jquery-rails to Gemfile of plugins, test/dummy app needs it. Closes #3091. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;rake assets:precompile&lt;/code&gt; loads the application but does not initialize it.&lt;/p&gt;

&lt;p&gt;To the app developer, this means configuration add in
config/initializers/* will not be executed.&lt;/p&gt;

&lt;p&gt;Plugins developers need to special case their initializers that are
meant to be run in the assets group by adding :group =&gt; :assets.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find an exhaustive list of changes on &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.0...v3.1.1.rc2&quot;&gt;github&lt;/a&gt;. Along with the &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=6&amp;state=closed&quot;&gt;closed issues marked for v3.1.1&lt;/a&gt;. You can also take a look to what's new between &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.1.rc1...v3.1.1.rc2&quot;&gt;v3.1.1.rc1 and v3.1.1.rc2&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also see issues &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=8&amp;state=open&quot;&gt;we haven't closed yet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to everyone!&lt;/p&gt;</content:encoded>
	<dc:date>2011-09-29T22:20:06+00:00</dc:date>
	<dc:creator>spastorino</dc:creator>
</item>
<item rdf:about="tag:weblog.rubyonrails.org,2011-09-15:29516">
	<title>Ruby on Rails: [ANN] Rails 3.1.1.rc1</title>
	<link>http://feedproxy.google.com/~r/RidingRails/~3/YwUbx4KG1Tk/ann-rails-3-1-1-rc1</link>
	<content:encoded>&lt;p&gt;Hi everyone,&lt;/p&gt;

&lt;p&gt;Rails 3.1.1.rc1 has been released. Please give it a try, it's our chance to fix regressions you might find and make a beautiful 3.1.1 stable release. If there are no regressions I will be releasing 3.1.1 final next September 16th during GoGaRuCo.&lt;/p&gt;

&lt;h2&gt;CHANGES&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;ActionMailer&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActionPack&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Allow asset tag helper methods to accept :digest =&gt; false option in order to completely avoid the digest generation.
Useful for linking assets from static html files or from emails when the user
could probably look at an older html email with an older asset. [Santiago Pastorino]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't mount Sprockets server at config.assets.prefix if config.assets.compile is false. [Mark J. Titorenko]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set relative url root in assets when controller isn't available for Sprockets (eg. Sass files using asset_path). Fixes #2435 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix basic auth credential generation to not make newlines. GH #2882&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed the behavior of asset pipeline when config.assets.digest and config.assets.compile are false and requested asset isn't precompiled.
Before the requested asset were compiled anyway ignoring that the config.assets.compile flag is false. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CookieJar is now Enumerable. Fixes #2795&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed AssetNotPrecompiled error raised when rake assets:precompile is compiling certain .erb files. See GH #2763 #2765 #2805 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Manifest is correctly placed in assets path when default assets prefix is changed. Fixes #2776 [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed stylesheet&lt;em&gt;link&lt;/em&gt;tag and javascript&lt;em&gt;include&lt;/em&gt;tag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix ActiveRecord#exists? when passsed a nil value&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix assert&lt;em&gt;select&lt;/em&gt;email to work on multipart and non-multipart emails as the method stopped working correctly in Rails 3.x due to changes in the new mail gem.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveModel&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Remove hard dependency on bcrypt-ruby to avoid make ActiveModel dependent on a binary library.
You must add the gem explicitly to your Gemfile if you want use ActiveModel::SecurePassword:&lt;/p&gt;

&lt;p&gt;gem 'bcrypt-ruby', '~&gt; 3.0.0'&lt;/p&gt;

&lt;p&gt;See GH #2687. [Guillermo Iguaran]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveRecord&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;LRU cache in mysql and sqlite are now per-process caches.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/mysql_adapter.rb: LRU cache
keys are per process id.&lt;/li&gt;
&lt;li&gt;lib/active&lt;em&gt;record/connection&lt;/em&gt;adapters/sqlite_adapter.rb: ditto&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Database adapters use a statement pool for limiting the number of open
prepared statments on the database.  The limit defaults to 1000, but can
be adjusted in your database config by changing 'statement_limit'.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fix clash between using 'preload', 'joins' or 'eager_load' in a default scope and including the
default scoped model in a nested through association. (GH #2834.) [Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure we are not comparing a string with a symbol in HasManyAssociation#inverse&lt;em&gt;updates&lt;/em&gt;counter_cache?.
Fixes GH #2755, where a counter cache could be decremented twice as far as it was supposed to be.&lt;/p&gt;

&lt;p&gt;[Jon Leighton]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't send any queries to the database when the foreign key of a belongs_to is nil. Fixes
GH #2828. [Georg Friedrich]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixed find&lt;em&gt;in_batches method to not include order from default&lt;/em&gt;scope. See GH #2832 [Arun Agrawal]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Don't compute table name for abstract classes. Fixes problem with setting the primary key
in an abstract class. See GH #2791. [Akira Matsuda]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Psych errors with poor yaml formatting are proxied. Fixes GH #2645 and
GH #2731&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the LIMIT word with the methods #last and #first. Fixes GH #2783 [Damien Mathieu]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveResource&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;ActiveSupport&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fixed performance issue where TimeZone lookups would require tzinfo each time [Tim Lucas]&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ActiveSupport::OrderedHash is now marked as extractable when using Array#extract_options! [Prem Sichanugrist]&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Railties&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find an exhaustive list of changes on &lt;a href=&quot;https://github.com/rails/rails/compare/v3.1.0...v3.1.1.rc1&quot;&gt;github&lt;/a&gt;. Along with the &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=6&amp;state=closed&quot;&gt;closed issues marked for v3.1.1&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You can also see issues &lt;a href=&quot;https://github.com/rails/rails/issues?milestone=8&amp;state=open&quot;&gt;we haven't closed yet&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to everyone!&lt;/p&gt;</content:encoded>
	<dc:date>2011-09-15T00:55:49+00:00</dc:date>
	<dc:creator>spastorino</dc:creator>
</item>

</rdf:RDF>

