2017-02-20 17 views
0

Как запустить икру в рубине, передав ей аргументы? я пытался это нравится:spawn with args in ruby ​​

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

в validator.rb

puts ARGV.length 

всегда выводит 0

+0

Каких значения 3 и 5, как предполагается, будет, поскольку в настоящее время код дает мне ошибку -> TypeError: нет неявного преобразования Integer в String, – grail

+0

@ Аргументы grail должны быть номерами –

+0

, даже если они являются строками, я могу их .to_i в валидаторе –

ответ

0

вы работаете на какой-то странной операционной системы или с сумасшедшей версии Ruby?

, если вы смотрите в рубиновых документы, те примеры:

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

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

последний пример может быть изменен, чтобы сделать то, что ваш пример кода.

я побежал в IRB сессии:

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

Причина была небрежность. В корневом процессе я не заметил, что требуется этот файл «validator», и когда он подключается, он выполняется без каких-либо аргументов. То есть, ошибка не появляется в месте, где я думал –