Появление Ruby-программ от Ruby - PullRequest
1 голос
/ 30 октября 2010

Допустим, у меня есть скрипт ruby ​​hello_world.rb, в котором есть одна строка

puts "Hello, world"

И я хочу вызвать его из другого скрипта ruby ​​с именем spawn_hello_world.rb

pipe = IO.popen("ruby1.9.1 hello_world.rb", 'w+')
if pipe
  puts pipe.gets
end

вопрос: существует ли сокращенный способ запуска другого процесса ruby ​​без необходимости вызова ОС таким образом?

Я знаю, что мог бы сделать

pipe = IO.popen('-', 'w+')

, который бы запустил другой rubyинтерпретатор и я могли бы затем посылать ему команды, используя

pipe.puts "puts "Hello World""

Но это также выглядит довольно не элегантно.

Я в основном ищу рубиновый эквивалент многопроцессорного модуля Python

Ответы [ 2 ]

1 голос
/ 30 октября 2010

Вы можете использовать eval в коде в контексте его собственной привязки.Это позволит вам выполнить произвольный код, в то же время инкапсулируя вашу программу из-за неприятных побочных эффектов этого кода.
Он не совсем запускает другой интерпретатор Ruby, но он выполнит ваш код ruby ​​для вас.

0 голосов
/ 30 октября 2010

Не могли бы вы дать нам немного контекста здесь?Что ты собираешься делать?Разве вы не можете просто изменить код для использования "require" или "include" методов?

Просто любопытно.

Luis

...