Rails 3.1.1.rc2

Hi everyone,

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.



* No changes


* Allow asset tag helper methods to accept :digest => 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]

* Don't mount Sprockets server at config.assets.prefix if
config.assets.compile is false. [Mark J. Titorenko]

* Set relative url root in assets when controller isn't available for
Sprockets (eg. Sass files using asset_path). Fixes #2435 [Guillermo

* Fix basic auth credential generation to not make newlines. GH #2882

* 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]

* CookieJar is now Enumerable. Fixes #2795

* Fixed AssetNotPrecompiled error raised when rake assets:precompile
is compiling certain .erb files. See GH #2763 #2765 #2805 [Guillermo

* Manifest is correctly placed in assets path when default assets
prefix is changed. Fixes #2776 [Guillermo Iguaran]

* Fixed stylesheet_link_tag and javascript_include_tag to respect
additional options passed by the users when debug is on. [Guillermo

* Fix ActiveRecord#exists? when passsed a nil value

* 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.


* 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

  gem 'bcrypt-ruby', '~> 3.0.0'

  See GH #2687. [Guillermo Iguaran]


* Add deprecation for the preload_associations method. Fixes #3022.

  [Jon Leighton]

* Don't require a DB connection when loading a model that uses
set_primary_key. GH #2807.

  [Jon Leighton]

* Fix using select() with a habtm association, e.g.
Person.friends.select(:name). GH #3030 and

  [Hendy Tanata]

* Fix belongs_to polymorphic with custom primary key on target. GH #3104.

  [Jon Leighton]

* CollectionProxy#replace should change the DB records rather than
just mutating the array.
  Fixes #3020.

  [Jon Leighton]

* LRU cache in mysql and sqlite are now per-process caches.

  * lib/active_record/connection_adapters/mysql_adapter.rb: LRU cache
    keys are per process id.
  * lib/active_record/connection_adapters/sqlite_adapter.rb: ditto

* 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'.

* 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]

* Ensure we are not comparing a string with a symbol in
  Fixes GH #2755, where a counter cache could be decremented twice as
far as it was supposed to be.

  [Jon Leighton]

* Don't send any queries to the database when the foreign key of a
belongs_to is nil. Fixes
  GH #2828. [Georg Friedrich]

* Fixed find_in_batches method to not include order from
default_scope. See GH #2832 [Arun Agrawal]

* Don't compute table name for abstract classes. Fixes problem with
setting the primary key
  in an abstract class. See GH #2791. [Akira Matsuda]

* Psych errors with poor yaml formatting are proxied. Fixes GH #2645 and
  GH #2731

* Use the LIMIT word with the methods #last and #first. Fixes GH #2783
[Damien Mathieu]


* No changes


* Fixed performance issue where TimeZone lookups would require tzinfo
each time [Tim Lucas]

* ActiveSupport::OrderedHash is now marked as extractable when using
Array#extract_options! [Prem Sichanugrist]


* Add jquery-rails to Gemfile of plugins, test/dummy app needs it.
Closes #3091. [Santiago Pastorino]

* `rake assets:precompile` loads the application but does not initialize it.

  To the app developer, this means configuration add in
  config/initializers/* will not be executed.

  Plugins developers need to special case their initializers that are
  meant to be run in the assets group by adding :group => :assets.

You can find an exhaustive list of changes on
Along with the [closed issues marked for
You can also take a look to what's new between [v3.1.1.rc1 and

You can also see issues [we haven't closed

Thanks to everyone!

Hi Santiago,

thanks for releasing rc2 :)

Too bad some of my rake tasks (ex. assets:resprite) are no longer

working because of commit: https://github.com/rails/rails/commit/b4798894d35e2f1fbd53aad8cd230de154650339

To the app developer, this means configuration add in
config/initializers/* will not be executed.
Shouldn't this only affect "assets:precompile" and not any custom

“assets:*” tasks? If it is the intended behavior, how can I make
rails to execute all config/initializers again? As far as I have
seen it’s not documented…

My rake task is defined like this:

namespace :assets do

  desc "Recreate sprite images and css"

  task :resprite => :environment do







The problem in your case is that Rails 3.1.1 defined a new task called
environment inside the assets namespace, which is being called in your
You can resolve the namespace conflict by rewriting your task as

   desc "Recreate sprite images and css"
   task "assets:resprite" => :environment do

Hi Jos�,

thanks, everything's working fine now! :slight_smile: