ara_vartanian
2008-Mar-03 23:08 UTC
A kind of monkey patch and an invitation for criticism for all you (who know this stuff better than I do)
I''ve often felt the need including Rails'' view helpers within my controllers, if only for some simple things like formatting my flash notices with text helpers or html escaping. I loved this suggestion, which helps by not cluttering the namespace of controllers: http://snippets.dzone.com/posts/show/1799 But I wanted to generalize this a little to automatically include whatever helper modules are included in the views. So I dreamt up 35 lines of goodness: class Object def metaclass; class << self; self; end; end end module ActionController class Base class_inheritable_accessor :controller_helper_module class_inheritable_accessor :controller_helper_object self.controller_helper_module = Module.new self.controller_helper_object = Object.new class << self def add_template_helper_with_controller_helper(helper_module) self.controller_helper_module.send(:include, helper_module) recreate_controller_helper_object add_template_helper_without_controller_helper(helper_module) end alias_method_chain :add_template_helper, :controller_helper def inherited_with_controller_helper(child) inherited_without_controller_helper(child) child.controller_helper_module.send :include, controller_helper_module child.recreate_controller_helper_object end alias_method_chain :inherited, :controller_helper def recreate_controller_helper_object self.controller_helper_object = Object.new self.controller_helper_object.metaclass.send(:include, controller_helper_module) end end protected def help self.class.controller_helper_object end end end == I understand some people will balk at the idea of including these helpers in controllers, and I understand their reasons. I guess I''m just looking for criticism of the code, given that some people do want to do this kind of thing. It seems to work just fine in Rails 2.0, but I wonder if there are any performance problems or if there is something technically incorrect that jumps out at people. -- Ara --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---