37signals
Ph: 89495613

Rails 3.2.1 has been released

Rails 3.2.1 is out, with some fixes and doc improvements. Please check the CHANGELOGs gist for details.

Posted in Releases  | 12 comments

Rails 3.2.0: Faster dev mode & routing, explain queries, tagged logger, store

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!

I’ve been running on 3-2-stable for a few months working on Basecamp Next and it’s been a real treat. The new faster dev mode in particular is a major step up over 3.1.

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 :).

There’s a v3.2.0 tag on Github and we of course we still have the 3-2-stable branch as well. You can see all the glorious details of everything that was changed in our CHANGELOG compilation.

For documentation, we have the 3.2 release notes with upgrade instructions, both the API docs and the guides have been generated for 3.2 as well, and there’s a brand new 3.2-compatible version of Agile Web Development with Rails. A smörgÃ¥sbord indeed!

Note: If you’re having trouble installing the gems under Ruby 1.8.7, you’ve probably hit a RubyGems bug with YAML that’s been fixed in RubyGems 1.8.15. You can upgrade RubyGems using “gem update—system”.

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:

Faster dev mode & routing

The most noticeable new feature is that development mode got a ton and a half faster. Inspired by Active Reload, we now only reload classes from files you’ve actually changed. The difference is dramatic on a larger application.

Route recognition also got a bunch faster thanks to the new Journey engine and we made linking much faster as well (especially apparent when you’re having 100+ links on a single page).

Explain queries

We’ve added a quick and easy way to explain quieries generated by ARel. In the console, you can run something like puts Person.active.limit(5).explain 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!

Tagged logger

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:

Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
Logger.tagged("BCX") { Logger.info "Stuff" } # Logs "[BCX] Stuff" 
Logger.tagged("BCX") do
  Logger.tagged("Jason") do
    Logger.info "Stuff" # Logs "\[BCX\] \[Jason\] Stuff" 
  end
end

Active Record Store

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:

class User < ActiveRecord::Base
  store :settings, accessors: [ :color, :homepage ]
end
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

Posted in Releases  | 67 comments

Rails 3.2.0.rc2 has been released!

Hi everyone,

Rails 3.2.0.rc2 has been released!

What to update in your apps

Update your Gemfile to depend on rails ~> 3.2.0.rc2 Update your Gemfile to depend on sass-rails ~> 3.2.3 Start moving any remaining Rails 2.3-style vendor/plugins/*. These are finally deprecated!

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 lib/myplugin/* and config/initializers/myplugin.rb.

Changes since RC1

ActionMailer

No changes

ActionPack

Add font_path helper method Santiago Pastorino

Depends on rack ~> 1.4.0 Santiago Pastorino

Add :gzip option to caches_page. The default option can be configured globally using page_cache_compression Andrey Sitnik

ActiveModel

No changes

ActiveRecord

No changes

ActiveResource

No changes

ActiveSupport

ActiveSupport::Base64 is deprecated in favor of ::Base64. Sergey Nartimov

Railties

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. Santiago Pastorino

Guides are available as a single .mobi for the Kindle and free Kindle readers apps. Michael Pearson & Xavier Noria

Allow scaffold/model/migration generators to accept a "index" and "uniq" modifiers, as in: "tracking_id:integer:uniq" in order to generate (unique) indexes. Some types also accept custom options, for instance, you can specify the precision and scale for decimals as "price:decimal{7,2}". Dmitrii Samoilov

Gem checksums

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

You can find an exhaustive list of changes on github. Along with the closed issues marked for v3.2.0.

You can also see issues we haven't closed yet.

Thanks to everyone!

Posted in Releases  | 18 comments

Rails 3.2 RC1: Faster dev mode & routing, explain queries, tagged logger, store

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.

Faster dev mode & routing

The most noticeable new feature is that development mode got a ton and a half faster. Inspired by Active Reload, we now only reload classes from files you’ve actually changed. The difference is dramatic on a larger application.

Route recognition also got a bunch faster thanks to the new Journey engine and we made linking much faster as well (especially apparent when you’re having 100+ links on a single page).

Explain queries

We’ve added a quick and easy way to explain quieries generated by ARel. In the console, you can run something like puts Person.active.limit(5).explain 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!

Tagged logger

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:

Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
Logger.tagged("BCX") { Logger.info "Stuff" } # Logs "[BCX] Stuff" 
Logger.tagged("BCX") do
  Logger.tagged("Jason") do
    Logger.info "Stuff" # Logs "\[BCX\] \[Jason\] Stuff" 
  end
end

Active Record Store

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:

class User < ActiveRecord::Base
  store :settings, accessors: [ :color, :homepage ]
end
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

These are just a few of the highlights. The full release notes detail every loving change.

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 reporting bugs.

As always, you install a release candidate by doing gem install rails --pre.

Posted in Releases  | 25 comments

Git tag for 3.1.2 release

Unfortunately I accidentally pushed an incorrect v3.1.2 tag yesterday. I immediately recognised that it was wrong, so quickly deleted it and pushed the correct tag. I thought that this would not be a problem for anyone who was not pulling the rails repository at that exact moment.

It turns out I was wrong. If you have a rails repository clone that existed before the 3.1.2 release, in order to get the v3.1.2 tag into your repository, you will need to do:

git fetch origin tag v3.1.2

I am very sorry for the inconvenience.

Posted in Releases  | 0 comments

Rails 3.1.1 has been released!

Hi everyone,

Rails 3.1.1 has been released. This release requires at least sass-rails 3.1.4

CHANGES

ActionMailer

No changes

ActionPack

stylesheetlinktag('/stylesheets/application') and similar helpers doesn't throw Sprockets::FileOutsidePaths exception anymore [Santiago Pastorino]

Ensure defaultassethost_protocol is respected, closes #2980. [José Valim]

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.

This reverses a change made here: https://github.com/rails/rails/commit/5df72a238e9fcb18daf6ab6e6dc9051c9106d7bb#L0L324

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 "task :dump => :environment do".

[Ben Woosley]

Update to rack-cache 1.1.

Versions prior to 1.1 delete the If-Modified-Since and If-Not-Modified headers when config.actioncontroller.performcaching is true. This has two problems:

unexpected inconsistent behaviour between development & production environments breaks applications that use of these headers

[Brendan Ribera]

Ensure that enhancements to assets:precompile task are only run once [Sam Pohlenz]

TestCase should respect the view_assigns API instead of pulling variables on its own. [José Valim]

javascriptpath and stylesheetpath now refer to /assets if asset pipelining is on. [Santiago Pastorino]

button_to support form option. Now you're able to pass for example 'data-type' => 'json'. [ihower]

imagepath and imagetag should use /assets if asset pipelining is turned on. Closes #3126 [Santiago Pastorino and christos]

Avoid use of existing precompiled assets during rake assets:precompile run. Closes #3119 [Guillermo Iguaran]

Copy assets to nondigested filenames too [Santiago Pastorino]

Give precedence to config.digest = false over the existence of manifest.yml asset digests [christos]

escape options for the stylesheetlinktag method [Alexey Vakhov]

Re-launch assets:precompile task using (Rake.)ruby instead of Kernel.exec so it works on Windows [cablegram]

env var passed to process shouldn't be modified in process method. [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. [José Valim]

Sprockets uses config.assets.prefix for asset_path [asee]

FileStore keyfilepath properly limit filenames to 255 characters. [phuibonhoa]

Fix Hash#toquery edge case with htmlsafe strings. [brainopia]

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

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

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

Fixed stylesheetlinktag and javascriptincludetag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]

Fix ActiveRecord#exists? when passsed a nil value

Fix assertselectemail 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.

ActiveModel

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:

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

See GH #2687. [Guillermo Iguaran]

ActiveRecord

Add deprecation for the preload_associations method. Fixes #3022.

[Jon Leighton]

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

[Jon Leighton]

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

[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/activerecord/connectionadapters/mysql_adapter.rb: LRU cache keys are per process id. lib/activerecord/connectionadapters/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 HasManyAssociation#inverseupdatescounter_cache?. 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 findin_batches method to not include order from defaultscope. 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]

ActiveResource

No changes

ActiveSupport

ruby193: String#prepend is also unsafe [Akira Matsuda]

Fix obviously breakage of Time.=== for Time subclasses [jeremyevans]

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]

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]

Railties

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.

SHA-1

9337cff7772da034b0b34b73b85cf249f1a70f52 actionmailer-3.1.1.gem 7bb1b8d096a6ff1ff46dcfb778bf86a5daca1b0d actionpack-3.1.1.gem d5dc71e1a9a0e20d819f4dff27ff0697e99a7f64 activemodel-3.1.1.gem 7245632cb3b38612628304c1e244855d0053f7be activerecord-3.1.1.gem 6d09800202c2747e84249b8646f0fd480ed4924f activeresource-3.1.1.gem 66df2fd144aab22f52819fd489e33a976d68a46b activesupport-3.1.1.gem 6a35a49948bbd9f461839a1a271def90b23a851a rails-3.1.1.gem 6979ef891bd03fb639b979af9fdc56781f9358d9 railties-3.1.1.gem

You can find an exhaustive list of changes on github. Along with the closed issues marked for v3.1.1.

Thanks to everyone!

Posted in Releases  | 17 comments

[ANN] Rails 3.1.1.rc3

Hi everyone,

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.

CHANGES

ActionMailer

No changes

ActionPack

stylesheetlinktag('/stylesheets/application') and similar helpers doesn't throw Sprockets::FileOutsidePaths exception anymore [Santiago Pastorino]

Ensure defaultassethost_protocol is respected, closes #2980. [José Valim]

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.

This reverses a change made here: https://github.com/rails/rails/commit/5df72a238e9fcb18daf6ab6e6dc9051c9106d7bb#L0L324

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 "task :dump => :environment do".

[Ben Woosley]

Update to rack-cache 1.1.

Versions prior to 1.1 delete the If-Modified-Since and If-Not-Modified headers when config.actioncontroller.performcaching is true. This has two problems:

unexpected inconsistent behaviour between development & production environments breaks applications that use of these headers

[Brendan Ribera]

Ensure that enhancements to assets:precompile task are only run once [Sam Pohlenz]

TestCase should respect the view_assigns API instead of pulling variables on its own. [José Valim]

javascriptpath and stylesheetpath now refer to /assets if asset pipelining is on. [Santiago Pastorino]

button_to support form option. Now you're able to pass for example 'data-type' => 'json'. [ihower]

imagepath and imagetag should use /assets if asset pipelining is turned on. Closes #3126 [Santiago Pastorino and christos]

Avoid use of existing precompiled assets during rake assets:precompile run. Closes #3119 [Guillermo Iguaran]

Copy assets to nondigested filenames too [Santiago Pastorino]

Give precedence to config.digest = false over the existence of manifest.yml asset digests [christos]

escape options for the stylesheetlinktag method [Alexey Vakhov]

Re-launch assets:precompile task using (Rake.)ruby instead of Kernel.exec so it works on Windows [cablegram]

env var passed to process shouldn't be modified in process method. [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. [José Valim]

Sprockets uses config.assets.prefix for asset_path [asee]

FileStore keyfilepath properly limit filenames to 255 characters. [phuibonhoa]

Fix Hash#toquery edge case with htmlsafe strings. [brainopia]

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

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

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

Fixed stylesheetlinktag and javascriptincludetag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]

Fix ActiveRecord#exists? when passsed a nil value

Fix assertselectemail 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.

ActiveModel

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:

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

See GH #2687. [Guillermo Iguaran]

ActiveRecord

Add deprecation for the preload_associations method. Fixes #3022.

[Jon Leighton]

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

[Jon Leighton]

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

2923.

[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/activerecord/connectionadapters/mysql_adapter.rb: LRU cache keys are per process id. lib/activerecord/connectionadapters/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 HasManyAssociation#inverseupdatescounter_cache?. 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 findin_batches method to not include order from defaultscope. 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]

ActiveResource

No changes

ActiveSupport

ruby193: String#prepend is also unsafe [Akira Matsuda]

Fix obviously breakage of Time.=== for Time subclasses [jeremyevans]

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]

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]

Railties

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 github. Along with the closed issues marked for v3.1.1. You can also take a look to what's new between v3.1.1.rc2 and v3.1.1.rc3

You can also see issues we haven't closed yet.

Thanks to everyone!

Posted in Releases  | 10 comments

[ANN] 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.

CHANGES

ActionMailer

No changes

ActionPack

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

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

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

Fixed stylesheetlinktag and javascriptincludetag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]

Fix ActiveRecord#exists? when passsed a nil value

Fix assertselectemail 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.

ActiveModel

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:

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

See GH #2687. [Guillermo Iguaran]

ActiveRecord

Add deprecation for the preload_associations method. Fixes #3022.

[Jon Leighton]

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

[Jon Leighton]

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

2923.

[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/activerecord/connectionadapters/mysql_adapter.rb: LRU cache keys are per process id. lib/activerecord/connectionadapters/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 HasManyAssociation#inverseupdatescounter_cache?. 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 findin_batches method to not include order from defaultscope. 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]

ActiveResource

No changes

ActiveSupport

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]

Railties

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 github. Along with the closed issues marked for v3.1.1. You can also take a look to what's new between v3.1.1.rc1 and v3.1.1.rc2

You can also see issues we haven't closed yet.

Thanks to everyone!

Posted in Releases  | 9 comments

[ANN] Rails 3.1.1.rc1

Hi everyone,

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.

CHANGES

ActionMailer

No changes

ActionPack

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

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

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

Fixed stylesheetlinktag and javascriptincludetag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]

Fix ActiveRecord#exists? when passsed a nil value

Fix assertselectemail 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.

ActiveModel

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:

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

See GH #2687. [Guillermo Iguaran]

ActiveRecord

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

lib/activerecord/connectionadapters/mysql_adapter.rb: LRU cache keys are per process id. lib/activerecord/connectionadapters/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 HasManyAssociation#inverseupdatescounter_cache?. 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 findin_batches method to not include order from defaultscope. 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]

ActiveResource

No changes

ActiveSupport

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]

Railties

No changes

You can find an exhaustive list of changes on github. Along with the closed issues marked for v3.1.1.

You can also see issues we haven't closed yet.

Thanks to everyone!

Posted in Releases  | 20 comments

[ANN] Rails 3.1.0.rc8

Hi everyone,

Rails 3.1.0.rc8 has been released (we've an issue with rc7). This is the final release candidate. Please give it a try, it's our last chance to fix regressions and severe issues. We will be releasing final 3.1.0 next August 30th.

CHANGES

Check the CHANGELOG file of each framework to see what we've changed.

You can find an exhaustive list of changes on github. Along with the closed issues marked for v3.1.0.

You can also see issues we haven't closed.

A comprehensive CHANGELOG will be announced when 3.1.0 final is released.

Thanks!

Posted in Releases  | 19 comments

Rails 3.1: Release candidate

As I promised at RailsConf, we’re finally good to go on the Rails 3.1: Release Candidate. This is a fantastically exciting release. We have three new star features and an even greater number of just awesome improvements. First the stars:

The Asset Pipeline
The star feature of 3.1 is the asset pipeline powered by Sprockets 2.0. It makes CSS and JavaScript first-class code citizens and enables proper organization, including use in plugins and engines. See my RailsConf keynote for a full tour. This comes with SCSS as the default for stylesheets and CoffeeScript as the default for JavaScript. Much documentation is on the way for this.

HTTP Streaming
This lets the browser download your stylesheet and javascripts while the server is still generating the response. The result is noticeable faster pages. It’s opt-in and does require support from the web server as well, but the popular combo of nginx and unicorn is ready to take advantage of it. There’s a great Railscast on HTTP streaming and the API documentation is strong too.

jQuery is now the default
We’ve made jQuery the default JavaScript framework that ships with Rails, but it’s silly easy to switch back to Prototype if you fancy. It’s all bundled up in the jquery-rails and prototype-rails gems. Just depend on the one you’d like in the Gemfile and it’ll Just Work.

Other good stuff:

Reversible migrations: DRY migrations that know how to revert themselves. Cleaner, nicer migrations. Mountable engines: Engines can now have their own routing and helper scope. They can also take advantage of the asset pipeline (more documentation on this soon). Read the story behind mountable engines (even if the asset stuff is now out of date). Identity Map: It’s not enabled by default because of some important caveats that are still to be ironed out, but if you can deal with those, it’s a great way to cut down on the number of queries your app will trigger. Faster is better! Prepared statements: Active Record now uses cached prepared statements, which is a big boost for PostgreSQL in all cases and a boost for MySQL on complex statements. Rack::Cache on by default: This makes it possible to use HTTP caching with conditional get as a replacement for page caching (which we’ll soon factor into a plugin and remove from core). Turn test-output on Ruby 1.9: Much nicer test output courtesy of the Turn gem. It’s on with new applications by default on Ruby 1.9. Force SSL: It’s now easier than ever to keep your app safe with force_ssl. Either per-app or per-controller. Role-based mass-assignment protection: attr_protected now accepts roles, so it’s easier do deal with admin/non-admin splits and more. has_secure_password: Dead-simple BCrypt-based passwords. Now there’s no excuse not to roll your own authentication scheme. Custom serializers: Serialize objects with JSON or whatever else you’d like.

You can also check out the an even longer changelog and get a video overview from Railscast.

If you’re starting a new application, it’s strongly recommended that you do so using Ruby 1.9.2. Rails will continue to support 1.8.x until Rails 4.0, but it’s considered the legacy option. Ruby 1.9.x is where the action is. Get on board and enjoy the massive speed boost.

You can install the Rails 3.1: Release Candidate with gem install rails --pre. Enjoy and report any release candidate issues on Github. We expect to release the final version in a couple of weeks if all goes well.

Posted in Releases  | 72 comments

Rails 3.1 beta 1 released

We’ve taken our first release step towards the final version of Rails 3.1 today with the unveiling of beta 1. This is a release mostly for people who’ve already been following along with the development of Rails 3.1 and want to try a version that’s close to feature complete.

We do not yet have all the documentation ready, so it’s still a bit of a detective job to figure out how it all fits together. Thus, this is not a general release and I wont hold it against you if you’re holding out for a release candidate (coming in the next few weeks).

The tag is 3.1.0.beta1 and you can install using gem install rails --pre. Enjoy!

Posted in Releases  | 42 comments

Rails 3.0.5 has been released!

Aaron Patterson showed us some tenderlove this week by releasing Rails 3.0.5. Have a peek at what got updated.

Bugs Fixed

Fix when gzip returns a UTF-8 string on Ruby 1.9, when it is actually binary. commit
Active Record limit values will not escape Arel SQL Literal nodes. commit
Relation#where calls will always produce AND statements regardless of how conditions hashes behaves (reverting 00693209ecc).
Observer callbacks will only be executed once when using STI classes in ActiveRecord. commit

Deprecations Added:

Deprecate Relation#& alias for Relation#merge. commit
Deprecated support for interpolated association conditions with the :conditions => ‘foo = #{bar}’ syntax, and added the new interpolation syntax which is :conditions => proc { “foo = #{bar}” }. commit

This is not a complete list of changes. The complete list of changes can be found here

SHA1 Checksums:

actionmailer-3.0.5.gem b25750c8126aa21db27d7b0ee829b2e94e525ebc
actionpack-3.0.5.gem 0a6f7f9ac2960ff224c913877a2917e1bea80df3
activemodel-3.0.5.gem 1556900a7afa1cdcdf4641edbcdd2c24f98bb2de
activerecord-3.0.5.gem 33dd05d7362931564f6f15ea7130cc27a5fc09e8
activeresource-3.0.5.gem 758f893cbb7ef945c857bf4ca044b94017bdc437
activesupport-3.0.5.gem 195fa3f7fa044134703a655cdb906edb515286c4
rails-3.0.5.gem 32322bf9952d76c5fa0054c8533c0c58609f40aa
railties-3.0.5.gem 3dddf14736dec991c3dbbe2d89495613e72c19c7

Posted in Releases  | 28 comments

Rails 3.0.3: Faster Active Record plus fixes

How about some free speed? Well, here you go. Rails 3.0.3 includes a much faster version of Active Record that reclaims the performance lost when we went from Rails 2.3.x to 3.x and then some. Aaron Patterson has done a phenomenal job benchmarking, tweaking, and tuning the ARel engine that underpins Active Record 3 and the result is Teh Snappy.

You can read more about Aaron’s work in his ARel 2.0 write-up. If you dare, you can also have a look at his RubyConf slides that went over the rewrite and speed-up in even greater detail (warning: there are slides of boys kissing!).

In addition to the free speed, we’ve also included a truckload of minor fixes. So everything just works better and faster. What more can you ask for? Oh, that it’s a drop-in replacement for Rails 3.0—there are no API changes. You got it.

See all the changes on Github. Install the latest version using gem install rails. Or bind yourself to the v3.0.3 tag.

Enjoy!

Note: Active Record 3.0.3 is mistakenly reporting its tiny version as 1 instead of 3. This has no impact on anything you do unless you were specifically checking that tiny version. But if it bothers you lots, it’s fixed on the 3-0-stable branch.

Posted in Releases  | 73 comments

Ruby on Rails 2.3.9 Released

We’ve released Ruby on Rails 2.3.9 (gem and git tag) to extend the 2.3.8 bridge a few steps closer to Rails 3 and Ruby 1.9. If your app runs on Rails 2.3.9 without deprecation warnings, you’re looking good for an upgrade to Rails 3.

Deprecations

Changes i18n named-interpolation syntax from the deprecated Hello {{name}} to the 1.9-native Hello %{name}. Replaces Kernel#returning with Object#tap which is native to Ruby 1.8.7. Renames Array#random_element to Array#sample which is native to Ruby 1.9. Renames config.load_paths and .load_once_paths to the more accurate config.autoload_paths and .autoload_once_paths.

Along with these deprecations come a broad array of bugfixes and minor tweaks. Read the commit log for the full story.

Onward to 3.1!

Posted in Releases  | 30 comments


You are viewing a mobilized version of this site...
View original page here

Mobilized by Mowser Mowser