2016-05-06 2 views
-1

puts(putsp)のすべての反復に対してコールバックを行い、警告しています。例えばputsのコールバックとRubyへの警告

puts "test" -> def callback() -> "test" 

どのように私はこれを達成することができるだろうか?

+0

コールバックとは? – sawa

+0

** putsの**反復**とはどういう意味ですか? putsが**呼ばれるたびに**を意味しますか? – sawa

+0

はい、基本的にすべてのstdoutとstderrを関数に取り込みます。ラッパーのように。 – KNgu

答えて

1

これは可能ですが、実行するたびにRubyランタイム全体に適用されるため、実際に実行しても構いません。他の人と一緒にプロジェクトに取り組んでいる場合は、必ずバイインを受けてください。

これを行うには、元のメソッドを別のメソッド名にエイリアスします。次に、独自の処理を行うメソッドを再定義します。これは、元のメソッドを呼び出すことで終了します。たとえば、putsの場合:

#!/usr/bin/env ruby 

module Kernel 
    alias original_puts puts 
    def puts(object) 
     # Do my own processing here, e.g. 
     original_puts "This is coming from my overrided puts:" 
     original_puts(object) 
    end 
end 

puts 'hi' 

=begin 

Outputs: 

This is coming from my overrided puts: 
hi 

=end 
+0

良い方法がありますか?私はstdoutとstderrの両方をキャプチャし、HTTP POST経由で送信しようとしています。 – KNgu

+0

投稿を行う独自のメソッドを作成し、代わりにそのメソッドを呼び出すのはなぜですか? putsなどのすべての呼び出しをHTTP POSTとして送信することをお望みですか? –

+0

私は複数のプロジェクトでそれを使用し、すべてのputsを書き換えて警告するのは難しいでしょうから。 – KNgu

関連する問題