Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

BACKWARDS INCOMPATIBLE: Renamed application.rb to application_control…

…ler.rb and removed all the special casing that was in place to support the former. You must do this rename in your own application when you upgrade to this version [DHH]
  • Loading branch information...
commit fcce1f17eaf9993b0210fe8e2a8117b61a1f0f69 1 parent 4b33fae
David Heinemeier Hansson dhh authored
9 actionpack/lib/action_controller/dispatcher.rb
@@ -12,14 +12,7 @@ def define_dispatcher_callbacks(cache_classes)
after_dispatch :cleanup_application
- # Common callbacks
- to_prepare :load_application_controller do
- begin
- require_dependency 'application' unless defined?(::ApplicationController)
- rescue LoadError => error
- raise unless error.message =~ /application\.rb/
- end
- end
+ to_prepare(:load_application_controller) { ApplicationController }
if defined?(ActiveRecord)
after_dispatch :checkin_connections
6 activesupport/lib/active_support/dependencies.rb
@@ -314,11 +314,7 @@ def loadable_constants_for_path(path, bases = load_paths)
nesting = nesting[1..-1] if nesting && nesting[0] == ?/
next if nesting.blank?
- [
- nesting.camelize,
- # Special case: application.rb might define ApplicationControlller.
- ('ApplicationController' if nesting == 'application')
- ]
+ [ nesting.camelize ]
5 railties/CHANGELOG
@@ -1,3 +1,8 @@
+* BACKWARDS INCOMPATIBLE: Renamed application.rb to application_controller.rb and removed all the special casing that was in place to support the former. You must do this rename in your own application when you upgrade to this version [DHH]
*2.2.1 [RC2] (November 14th, 2008)*
* Fixed plugin generator so that generated unit tests would subclass ActiveSupport::TestCase, also introduced a helper script to reduce the needed require statements #1137 [Mathias Meyer]
2  railties/Rakefile
@@ -184,7 +184,7 @@ task :copy_html_files do
task :copy_application do
- cp "helpers/application.rb", "#{PKG_DESTINATION}/app/controllers/application.rb"
+ cp "helpers/application_controller.rb", "#{PKG_DESTINATION}/app/controllers/application_controller.rb"
cp "helpers/application_helper.rb", "#{PKG_DESTINATION}/app/helpers/application_helper.rb"
2  railties/doc/guides/source/layouts_and_rendering.txt
@@ -313,7 +313,7 @@ With those declarations, the +inventory+ layout would be used only for the +inde
Layouts are shared downwards in the hierarchy, and more specific layouts always override more general ones. For example:
[source, ruby]
0  railties/helpers/application.rb → railties/helpers/application_controller.rb
File renamed without changes
3  railties/lib/rails_generator/generators/applications/app/app_generator.rb
@@ -47,7 +47,8 @@ def manifest
m.file "README", "README"
# Application
- m.template "helpers/application.rb", "app/controllers/application.rb", :assigns => { :app_name => @app_name, :app_secret => md5.hexdigest }
+ m.template "helpers/application_controller.rb", "app/controllers/application_controller.rb", :assigns => {
+ :app_name => @app_name, :app_secret => md5.hexdigest }
m.template "helpers/application_helper.rb", "app/helpers/application_helper.rb"
m.template "helpers/test_helper.rb", "test/test_helper.rb"
m.template "helpers/performance_test.rb", "test/performance/browsing_test.rb"

30 comments on commit fcce1f1

Jacek Becela

Saw that coming ;)

Joost Baaij

Makes sense for 3.0, not sure about 2.3 though.

Ryan Bates

Maybe still load application.rb if it exists and spit out a deprecation notice? That way there can be a transitioning version.

Geoffrey Grosenbach

I remember way back when…“ApplicationController” was just called “Application.”

Those were the days.

Dr Nic Williams

+1 ryanb

Thibaud Guillaume-Gentil


Seth Ladd

This should be a 3.0 change, imo.

Nicolás Sanguinetti

+1 ryanb phase this change in gradually =)

Chad Humphries


Jason Torres

that makes more sense.

Amos King

+1 for ryanb. Any big api change should at lease get some deprecation warning and isn’t this a little much for a minor release.


We haven’t really decided if will be 2.3 or 3.0. Also, ‘rake rails:update’ task should/will take care of renaming application.rb → application_controller.rb.

Bob Martens

Isn’t 2.3 going to be released as 3.0? I thought that is how it worked. 1.2.x lead to 2.0.x … so 2.2.x will give way to 3.0.x!

Regardless, keep up the good work!

Ryan Bigg

I remember when this was being discussed. Glad to see it finally making its way into core!

Michael Koziarski

When this gets pushed into a release we’ll naturally take care to make the upgrade path as smooth as possible.

However, if you’re tracking edge right now, just after a branch, you’re braver than I am :)

Dimitri Krassovski

At last!

Alexander Balashov

1+ for ranaming

Geoff Garside

Anyone else getting an ActionController::MethodNotAllowed when visiting / since this?

Geoff Garside

nm its unrelated, seems map.root is generating me a POST rather than a GET route :S

Ryan Bates

I still think a transitioning version (where application.rb is loaded and deprecated) would be nice. Not for development (it’s easy enough to rename a file), but for deployment in production. Now you’ll have to push this change to the server the exact same time you upgrade Rails. Having a stepping-stone version where both application.rb and application_controller.rb work would ease this transition.

Ryan Bates

After thinking about it a bit more I suppose it’s not as big of an issue. It’s easy enough to make a second branch, change the gem version in the config, fix all the problems, and then deploy that all to the server in one go.

Michael Koziarski

@ryanb: 2.2.something could end up being the transitioning version you’re talking about, or we could add the deprecation / warnings into master.

Again, this isn’t how we’re going to ship anything, and chasing edge is risky, especially this soon after a branch where we have a bunch of features / patches we pushed out as ‘too risky’.

Michael Koziarski

@topfunky: oh yeah, well I remember abstract_application_controller.rb. Take that!


abstract_application_controller.rb! whoa


My only problem with calling it application_controller is that it indicates that it is a controller in MVC, which it isn’t. It has features that all other controllers share.

Ryan Bates

@evilgeenius the class has been called ApplicationController for quite some time. This patch just makes the file name consistent with the class name. Consistency is a good thing.

Jamie Orchard-Hays



@ryanb i concede

David Reese

With this commit you’ll need to update your phusion passenger — but it might be better to hack the solution yourself than try to be fancy and update the gem.

See my note in comments at

Please sign in to comment.
Something went wrong with that request. Please try again.