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...
1 parent 4b33fae commit fcce1f17eaf9993b0210fe8e2a8117b61a1f0f69 @dhh dhh committed Nov 17, 2008
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.

Ruby on Rails member

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!

Ruby on Rails member

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.

Ruby on Rails member

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

Ruby on Rails member

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