2017-10-14 9 views
0

システムを使用してシステムコールを行う前にチェックするか、 ``が実行されて特定のモジュールからコールが行われたことを確認します。システムコールが実行される前にイベントをトリガーする

私はそれを使用してコマンドのサニタイズや検証を行うのではなく、1つのモジュールだけがこれらの呼び出しを行うことができるようにします。

ありがとうございました。

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 

編集:解決策が見つかりました

答えて

0

上記のコードは、完全なプロセスではありませんが、それはシステムとバックティックメソッドを更新し、私が探していた作業を行い少しだけです。

Alias_methodはスコープをincludeにシフトし、循環参照などを防止します。

+0

「システム」のエイリアシングのポイントは何ですか? 'system'メソッド定義に循環参照があるようです。また、ラッパーメソッドを作成し、バックティックの代わりにコードから呼び出す方が簡単だと思います。 –

+0

alias_methodは実行時にスコープをシフトするので、includeを使用すると4つのメソッドが別々のエンティティとして導入されます(私はこれが起こっていると思います)。これは、私と他の人が埋め込まれているプロジェクトと一緒に作業したり、間違ってシステムコールをしたりするのを防ぐためです。私は管理のためのホワイトリストに入れたアプローチを使用しました。ユーザーが何かをする必要がある場合、モジュールに追加されたスイッチを使用して手動で機能をオフにすることができます。 – CBusBus

関連する問題