2017-02-20 3 views
0

wie startet man einen spawn in rubin, übergibt es die argumente? Ich habe versucht, dies zu mögen:spawn mit args in ruby ​​

validators_pid << spawn(RbConfig.ruby, "#{Dir.pwd}/../lib/validator.rb", 3, 5) 

in validator.rb

puts ARGV.length 

gibt immer 0

+0

Was die Werte 3 und 5 sein sollen, weil zur Zeit des Code mir einen Fehler gibt -> Typeerror: keine implizite Konvertierung von Integer in String – grail

+0

@ Gral Argumente müssen Zahlen sein –

+0

auch wenn sie Strings sind, kann ich ihnen .to_i in Validator –

Antwort

0

werden Sie auf einige seltsame Betriebssystem oder mit einer verrückten Ruby-Version ausgeführt wird?

, wenn Sie das Ruby-docs schauen, das sind die Beispiele:

pid = spawn("tar xf ruby-2.0.0-p195.tar.bz2") 
Process.wait pid 

pid = spawn(RbConfig.ruby, "-eputs'Hello, world!'") 
Process.wait pid 

das letzte Beispiel geändert werden kann, zu tun, was Ihr Beispielcode tut.

i lief es in irb Sitzung:

irb(main):011:0> pid = spawn(RbConfig.ruby, "-eputs ARGV.length", '1', '2', '3') 
=> 84399 
irb(main):012:0> 3 
+0

Der Grund war Fahrlässigkeit. Im root-Prozess hatte ich nicht bemerkt, dass diese "Validator" -Datei erforderlich ist, und bei der Verbindung wurde sie ohne Argumente ausgeführt. Das heißt, der Fehler erscheint nicht an der Stelle, wo ich dachte –