Estoy tratando de obtener la versión actual de nginx en Ruby. He probado todos estos, y nada parece funcionar:
a = `nginx -v` puts a # ==> nil a = `nginx -V` puts a # ==> nil again a = system('nginx -v') puts a # ==> nil Alguien sabe como puedo obtener estos datos? Comportamiento extraño. Lo mismo para postgres y ruby funcionan bien.
Hay un puñado de métodos que pueden ejecutar comandos del sistema y todos funcionan de manera diferente. Por ejemplo `date` funciona de manera diferente a system('date') . Más aquí .
Además, algunos comandos escriben en STDOUT , algunos en STDERR y, aparentemente, nginx -v escribe en STDERR . Para este escenario hay otra opción que da acceso a más información: Open3
require 'open3' stdout, stderr, status = Open3.capture3("nginx -v") # ["", "nginx version: nginx/1.21.6\n", #<Process::Status: pid 22253 exit 0>] stdout, stderr, status = Open3.capture3("date") # ["Sun Jan 30 12:55:29 EET 2022\n", "", #<Process::Status: pid 22264 exit 0>] stdout, stderr, status = Open3.capture3("ruby -v") ["ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [arm64-darwin21]\n", "", #<Process::Status: pid 22571 exit 0>]