Как запустить икру в рубине, передав ей аргументы? я пытался это нравится:spawn with args in ruby
validators_pid << spawn(RbConfig.ruby, "#{Dir.pwd}/../lib/validator.rb", 3, 5)
в validator.rb
puts ARGV.length
всегда выводит 0
Как запустить икру в рубине, передав ей аргументы? я пытался это нравится:spawn with args in ruby
validators_pid << spawn(RbConfig.ruby, "#{Dir.pwd}/../lib/validator.rb", 3, 5)
в validator.rb
puts ARGV.length
всегда выводит 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
Причина была небрежность. В корневом процессе я не заметил, что требуется этот файл «validator», и когда он подключается, он выполняется без каких-либо аргументов. То есть, ошибка не появляется в месте, где я думал –
Каких значения 3 и 5, как предполагается, будет, поскольку в настоящее время код дает мне ошибку -> TypeError: нет неявного преобразования Integer в String, – grail
@ Аргументы grail должны быть номерами –
, даже если они являются строками, я могу их .to_i в валидаторе –