title: Override rails helpers with access to original
body: <p>I want to use rails' familiar helpers, but with slightly altered functionality. The way I see it, I want to be able to do something like:</p>
  
  <pre><code>module AwesomeHelper
    #... create alias of stylesheet_link_tag to old_stylesheet_link_tag
    def stylesheet_link_tag(*args)
      if @be_awesome
        awesome_stylesheet_link_tag *args
      else
        old_stylesheet_link_tag *args
      end
    end
  end
  </code></pre>
  
  <p>The way I see it, I have three options:</p>
  
  <ol>
  <li><strong>Monkey patching:</strong> Reopening the rails helper module. If the rails team ever change the name of their helper module, my code becomes a source of brittleness. Not insurmountable, but not ideal.</li>
  <li><strong>Use different method names:</strong> Trying to stick to the common rails interface may be my downfall. My changes may become a source of confusion for other developers</li>
  <li><strong>Detaching methods (new):</strong> Not sure whether this would work, or whether it would have the same drawbacks as 1. Will research this, but this might be a good starting point.</li>
  </ol>
  
  <p>So the question here is, am I stuck with one of these sub-optimal solutions, or is there another way that I haven't considered? If I go for option 3, is there a way to do it without directly addressing the rails helper module?</p>
  
  <p>(Note: I have removed the context, as it adds nothing to the question.)</p>