从 ruby​​ 脚本运行另一个 ruby​​ 脚本

2024-05-23

在 ruby​​ 中,是否可以指定使用与运行原始脚本相同的 ruby​​ 解释器来调用另一个 ruby​​ 脚本?

例如,如果 a.rb 运行 b.rb 几次,是否可以替换

system("ruby", "b.rb", "foo", "bar")

与类似的东西

run_ruby("b.rb", "foo", "bar")

所以如果你使用ruby1.9.1 a.rb在原来的情况下,ruby1.9.1将用于 b.rb,但如果您只是使用ruby a.rb在原来的情况下,ruby会用在 b.rb 上吗?

我不想使用 shebangs,因为我希望它能够在不同的计算机上运行,​​其中一些计算机没有/usr/bin/env.

Edit:我不是这个意思load or require等等,但会产生新进程(这样我就可以使用多个 CPU)。


require "b.rb"

将执行 b.rb 的内容(你调用离开“.rb”,并且有一个搜索路径)。在你的情况下,你可能会这样做:

a.rb:

require "b.rb";
b("Hello", "world")

b.rb:

def b(first, second)
  puts first + ", " + second
end

请注意,如果您使用require http://ruby-doc.org/core-2.0/Kernel.html#method-i-require,Ruby只会加载并执行该文件一次(每次调用load http://ruby-doc.org/core-2.0/Kernel.html#method-i-load它将被重新加载),但您可以根据需要多次调用文件中定义的方法。

随着事情变得越来越复杂,您将希望转向面向对象的设计。

编辑:在这种情况下,您应该研究 Ruby 线程。一个简单的例子是:

a.rb:

require "b";
t1 = Thread.new{b("Hello", "world");}
t2 = Thread.new{b("Hello", "galaxy");}
t1.join
t2.join

b.rb:

def b(first, second)
  10.times {
    puts first + ", " + second;
    sleep(0.1);
  }
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 ruby​​ 脚本运行另一个 ruby​​ 脚本 的相关文章

随机推荐