我有一个* .rb文件目录,我想运行,但是顺序而不是并行。我的想法是有一个调用每个文件的主文件,但是如何在运行下一个文件之前强制它等到进程完成?
答案 0 :(得分:4)
Dir['*.rb'].each{ |f| load(f) }
每个文件都将完全运行;在当前文件完全加载并执行之前,代码不会继续下一次迭代。
唯一需要注意的是,如果你有一个文件启动一个新线程并且没有.join
它; Ruby文件通常会在Thread完成之前退出;在这种情况下,当线程继续运行时,下一个文件将开始加载。
编辑:如果您需要从Ruby运行任意命令行代码,您只需执行以下操作:
Dir['*.rb'].each{ |f| `rails r #{f}` }
同样,内核backtick command将等到进程完成后再返回。