/ / Loguj wyjście procesu - ruby, ruby-on-rails-3, logowanie, proces

Log process output - ruby, ruby-on-rails-3, logowanie, proces

Użyłem tej metody system rozpocząć proces. numer PID tego procesu jest przechowywany w pliku worker.pid

jednak muszę wygenerować dziennik tego procesu, jak mogę przechowywać dane wyjściowe tego procesu?

proces jest tworzony za pomocą tego polecenia:

system "bundle exec rake resque:work >> ./resque.log QUEUE=* PIDFILE=#{pid_file} &"

PS: Używam ruby ​​1.8, BACKGROUND=tak nie zadziała. PS2: platforma linux

Odpowiedzi:

1 dla odpowiedzi № 1

Może to, czego szukasz, to IO.popen

Pozwala to na rozwidlenie podprocesu i uzyskanie dostępu do jego danych wyjściowych za pośrednictwem obiektu IO

# fork off a one-off task
# and return the output as a string
ls = IO.popen("ls")
ls.read

# or return an array of lines
IO.popen("ls").readlines

# or create a continuing task
tail = IO.popen("tail -f /some/log/file.log")
loop do
puts tail.gets
end

Proponuję zapoznać się z dokumentacją, ale możesz też pisać do strumienia i robić różne sprytne rzeczy.


0 dla odpowiedzi nr 2

Jeśli dobrze rozumiem, co próbujesz osiągnąć, szukasz klasy Open3. http://www.ruby-doc.org/stdlib-1.8.7/libdoc/open3/rdoc/Open3.html