2015-04-02 100 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