2015-04-02 93 views
0

我不鼓励使用stylesheet_link_tag宝石 - 我想显示在控制台的警告每次stylesheet_link_tag被调用,无需重新打开或复制此方法的逻辑(我关心的是不同版本的Rails将有不同的实现) 。在调用方法时显示警告?

是否有红宝石的方式挂接到现有的方法(无需重新打开它),或者一个办法可以检测到该名称的方法被调用,所以我就可以继续显示我的自定义警告?

回答

2

超级将无法​​正常工作。没有模块的超类。你需要一个alias

将这个某处application_helper.rb,所有定义之前:

module ::ActionView::Helpers::AssetTagHelper 
    alias stylesheet_link_tag_original stylesheet_link_tag 
    def stylesheet_link_tag(*params) 
     logger.warn 'Stylesheet link tag called!' 
     stylesheet_link_tag_original(*params) 
    end 
    end 
+0

@ lfender6445,是没有任何理由为Rails'alias_method'?在这种情况下,纯Ruby的“别名”似乎完成了100%的同样的工作。 – 2015-04-02 22:41:05

+0

你知道它有趣,起初我并不认为它是有效的语法,因为别名不用逗号来调用。我添加了逗号,我的编辑开始抱怨!事实证明这完全是故意的我要加以更新的答案 – lfender6445 2015-04-03 00:45:10

+0

@ lfender6445,它也并不需要':'。 'alias'是一个普通的Ruby关键字,它需要两个方法名称。我在提交答案前检查了代码。 – 2015-04-03 00:54:41