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:
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
The way I see it, I have three options:
- Monkey patching: 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.
- Use different method names: Trying to stick to the common rails interface may be my downfall. My changes may become a source of confusion for other developers
- Detaching methods (new): 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.
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?
(Note: I have removed the context, as it adds nothing to the question.)
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…