mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Fix controller resolution to avoid accidentally inheriting a controller from a parent module.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3530 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
c77729fd23
commit
dfa6e14af6
2 changed files with 9 additions and 3 deletions
|
@ -1,6 +1,8 @@
|
|||
*SVN*
|
||||
|
||||
* Set sweeper's @controller to nil after a request so that the controller may be collected between requests.
|
||||
* Fix controller resolution to avoid accidentally inheriting a controller from a parent module. [Nicholas Seckar]
|
||||
|
||||
* Set sweeper's @controller to nil after a request so that the controller may be collected between requests. [Nicholas Seckar]
|
||||
|
||||
* Subclasses of ActionController::Caching::Sweeper should be Reloadable. [Rick Olson]
|
||||
|
||||
|
|
|
@ -233,15 +233,19 @@ module ActionController
|
|||
controller_name = "#{mod_name}Controller"
|
||||
|
||||
suppress(NameError) do
|
||||
controller = mod.const_get(controller_name)
|
||||
ActionController::Base.logger.info("Looking for #{controller_name}")
|
||||
controller = eval("mod::#{controller_name}", nil, __FILE__, __LINE__)
|
||||
ActionController::Base.logger.info("Found")
|
||||
# Detect the case when const_get returns an object from a parent namespace.
|
||||
|
||||
ActionController::Base.logger.info("#{controller.name} == #{mod.name}::#{controller_name}")
|
||||
if mod == Object || controller.name == "#{mod.name}::#{controller_name}"
|
||||
return controller, (index - start_at)
|
||||
end
|
||||
end
|
||||
|
||||
mod = suppress(NameError) do
|
||||
next_mod = mod.const_get(mod_name)
|
||||
next_mod = eval("mod::#{mod_name}", nil, __FILE__, __LINE__)
|
||||
# Check that we didn't get a module from a parent namespace
|
||||
(mod == Object || next_mod.name == "#{mod.name}::#{controller_name}") ? next_mod : nil
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue