One of the core team’s goals is that if you have an application running on 2.3.6 with no deprecation warnings, your application will “just work” on 3.0. I can point to a few edge cases where this is not entirely true (e.g., dealing with non-REST routes, and with sending mail), and then there is the whole safe HTML thing, and the whole dynamic_form thing, but those can be dealt with using plugins. Otherwise by and large it is mostly true that 2.3.x applications “just work” on 3.0.
But that’s only half of the story. Because you can do it doesn’t mean that it is recommended. Most of the changes in this edition deal with best practices, or with finding things that work equally well with Ruby 1.9.2 as Ruby 1.8.7 and recommending that. An example of the former: using named routes instead of passing :controller and :action to link_to. An example of the latter: using join instead of to_s on an array instance. And then there are things like data migrations that should instead be using seeds.rb.
And then there is a third half: new things to play with like ARel, a new routing DSL, and bundler.
I am still pondering this. I don’t know yet whether it makes sense as a chapter, or a section, or a handful of sidebars, or a wiki page, or a blog post.