2017-10-14 47 views
0

我希望在系統調用之前檢查使用系統或執行``來確保調用是由特定模塊完成的。在執行系統調用之前觸發一個事件

我不想用它來清理或驗證命令,但只是確保只有一個模塊可以進行這些調用。

謝謝。

回答

0

找到了解決辦法:

module BacktickURI 
    alias_method :standard_back_tick_call, :` #` #Comment for fixing Notepad++ highlighting, needs even back ticks 
    alias_method :standard_system_call, :system 

    def `(uri)#` 
     standard_back_tick_call(uri) 
    end 

    def system uri 
    standard_system_call uri 
end 
end 

編輯:上面的代碼是不完整的過程,它只是做我一直在尋找的任務,更新系統和反引號方法的位。

Alias_method將範圍轉換爲包含,防止循環引用或類似的東西。

+0

這裏的「系統」的別名是什麼?看起來你在'system'方法定義中有一個循環引用。另外,我認爲只需創建一個包裝方法並從代碼中調用它而不是反引號就會更容易。 –

+0

alias_method在運行時移動作用域,所以當我使用include時,將四個方法作爲單獨的實體引入(我認爲這就是發生了什麼)。這樣做的目的是爲了防止我和他人與其嵌入的任何項目一起工作,並在不應該的時候意外地進行系統調用。我使用白名單管理方式。如果用戶需要做某些事情,他們可以通過添加到模塊的開關手動關閉該功能。 – CBusBus

相關問題