Should Flash::add_flash_types be public?

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|

ctrl.name + “#” + action

}

}.flatten

``

This is trivial to accomplish - simply change it to:

#…
define_method(type) do

request.flash[type]

end
protected type

helper_method type
#…

``