While playing around with gem `traceroute` (0.5.0) I noticed that my additional flash types:
# application_controller.rb
# ...
add_flash_types :success
add_flash_types :error
# ...
are "leaking" into public scope of every controller descendent of
ApplicationController:
ApplicationController.new.method(:error).source_location
ApplicationController.new.method(:success).source_location
I wonder if
add_flash_types should define the new methods as protected, since it might lead into conflicts with actual controller actions.
You can see this "leaking" with the gem or just with this:
ApplicationController.descendants.map { |ctrl|
ctrl.action_methods.map { |action|
}
}.flatten
This is trivial to accomplish - simply change it to:
#...
define_method(type) do
request.flash[type]
end
protected type
helper_method type
#...