Fixed that a SessionRestoreError was thrown if a model object was placed in the session that wasn't available to all controllers. This means that it's no longer necessary to use the 'model :post' work-around in ApplicationController to have a Post model in your session.

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1741 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson
2005-07-06 18:43:32 +00:00
parent a0d31fcd81
commit e5b86efea9
2 changed files with 21 additions and 23 deletions

View File

@@ -1,3 +1,8 @@
*SVN*
* Fixed that a SessionRestoreError was thrown if a model object was placed in the session that wasn't available to all controllers. This means that it's no longer necessary to use the 'model :post' work-around in ApplicationController to have a Post model in your session.
*1.9.0* (6 July, 2005)
* Added logging of the request URI in the benchmark statement (makes it easy to grep for slow actions)

View File

@@ -95,29 +95,22 @@ module ActionController #:nodoc:
@session["__valid_session"]
return @session
rescue ArgumentError => e
# TODO: Uncomment this on 0.13.1
# if e.message =~ %r{undefined class/module (\w+)}
# begin
# Module.const_missing($1)
# rescue LoadError, NameError => e
# raise(
# ActionController::SessionRestoreError,
# "Session contained objects where the class definition wasn't available. " +
# "Remember to require classes for all objects kept in the session. " +
# "(Original exception: #{e.message} [#{e.class}])"
# )
# end
#
# retry
# else
# raise
# end
raise(
ActionController::SessionRestoreError,
"Session contained objects where the class definition wasn't available. " +
"Remember to require classes for all objects kept in the session. " +
"(Original exception: #{e.message} [#{e.class}])"
)
if e.message =~ %r{undefined class/module (\w+)}
begin
Module.const_missing($1)
rescue LoadError, NameError => e
raise(
ActionController::SessionRestoreError,
"Session contained objects where the class definition wasn't available. " +
"Remember to require classes for all objects kept in the session. " +
"(Original exception: #{e.message} [#{e.class}])"
)
end
retry
else
raise
end
end
end