0
ここで何が起こっているのか、何を尋ねるのかは分かりませんが、実際には例を書く必要がありました。TestClass#fooが期待どおりに動作しないのはなぜですか? (詳細と下の例)
期待される動作:
- test.startは、startメソッド内で呼び出された
- FOO {}バー
- バーは、ファイルたびにログインし、5秒ごとに呼び出され と呼ばれています。ポイント3.タイムスタンプを見てみるまで、この総で3回
すべてが正常に動作し、foo.barは5秒ごとに呼び出されるように見えるんが、ループが終了するまで、それをファイルに出力しません。実際には、15秒後に連続して3回ファイルに記録されます。
require 'logger'
module Logging
def logger
Logging.logger
end
def self.logger
@logger ||= Logger.new(STDOUT)
end
end
class TestClass
include Logging
def initialize delay, log_path
@delay = delay
@log_path = log_path
end
def start
File.delete @log_path if File.exist? @log_path
exit if fork
Process.setsid
exit if fork
Dir.chdir '/'
STDOUT.reopen(@log_path, 'a')
STDERR.reopen(@log_path, 'a')
foo { bar }
end
def foo &block
3.times do
yield
sleep @delay
end
end
def bar
logger.info(self.class.name) { "testing" }
end
end
test = TestClass.new(5, "#{Dir.pwd}/test.log")
test.start
ここで間違っていることを教えてもらえますか? fooメソッドは実際のコードではここにあるように冗長ではありません。
はどうもありがとうございました。これは問題を解決しました。 – voyager