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 № 1Moż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