aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/abstract_controller
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2010-01-17 22:06:28 -0600
committerJoshua Peek <josh@joshpeek.com>2010-01-17 22:06:28 -0600
commitc29bb8857e637e77a8cf10f10c049d20fea3228a (patch)
tree7a7f0d8b29c71b12637e97dce4292f645762fc68 /actionpack/lib/abstract_controller
parent58fe3295feba782ba0a76b9315b962b1d33e8586 (diff)
downloadrails-c29bb8857e637e77a8cf10f10c049d20fea3228a.tar.gz
rails-c29bb8857e637e77a8cf10f10c049d20fea3228a.tar.bz2
rails-c29bb8857e637e77a8cf10f10c049d20fea3228a.zip
Clear out AS callback method pollution in AC::Base.action_methods
Diffstat (limited to 'actionpack/lib/abstract_controller')
-rw-r--r--actionpack/lib/abstract_controller/base.rb20
1 files changed, 12 insertions, 8 deletions
diff --git a/actionpack/lib/abstract_controller/base.rb b/actionpack/lib/abstract_controller/base.rb
index 816412d97e..3119ee498b 100644
--- a/actionpack/lib/abstract_controller/base.rb
+++ b/actionpack/lib/abstract_controller/base.rb
@@ -62,15 +62,19 @@ module AbstractController
# Array[String]:: A list of all methods that should be considered
# actions.
def action_methods
- @action_methods ||=
+ @action_methods ||= begin
# All public instance methods of this class, including ancestors
- public_instance_methods(true).map { |m| m.to_s }.to_set -
- # Except for public instance methods of Base and its ancestors
- internal_methods.map { |m| m.to_s } +
- # Be sure to include shadowed public instance methods of this class
- public_instance_methods(false).map { |m| m.to_s } -
- # And always exclude explicitly hidden actions
- hidden_actions
+ methods = public_instance_methods(true).map { |m| m.to_s }.to_set -
+ # Except for public instance methods of Base and its ancestors
+ internal_methods.map { |m| m.to_s } +
+ # Be sure to include shadowed public instance methods of this class
+ public_instance_methods(false).map { |m| m.to_s } -
+ # And always exclude explicitly hidden actions
+ hidden_actions
+
+ # Clear out AS callback method pollution
+ methods.reject { |method| method =~ /_one_time_conditions/ }
+ end
end
# Returns the full controller name, underscored, without the ending Controller.