Skip to content


Subversion checkout URL

You can clone with
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
@dhh 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


Saw that coming ;)


Makes sense for 3.0, not sure about 2.3 though.


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


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

Those were the days.


+1 ryanb




This should be a 3.0 change, imo.


+1 ryanb phase this change in gradually =)




that makes more sense.


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


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!


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


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


At last!


1+ for ranaming


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


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


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.


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.


@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’.


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


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




@ryanb i concede


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.