gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:24:33 26 4
gpt4 key购买 nike

在 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 上吗?

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

编辑:我不是说 loadrequire等等,但会生成新进程(因此我可以使用多个 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 , Ruby 只会加载和执行文件一次(每次调用 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

关于ruby - 从 ruby​​ 脚本运行另一个 ruby​​ 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2635108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com