在目录中按顺序运行ruby脚本

时间:2011-11-29 17:36:48

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个* .rb文件目录,我想运行,但是顺序而不是并行。我的想法是有一个调用每个文件的主文件,但是如何在运行下一个文件之前强制它等到进程完成?

1 个答案:

答案 0 :(得分:4)

Dir['*.rb'].each{ |f| load(f) }

每个文件都将完全运行;在当前文件完全加载并执行之前,代码不会继续下一次迭代。

唯一需要注意的是,如果你有一个文件启动一个新线程并且没有.join它; Ruby文件通常会在Thread完成之前退出;在这种情况下,当线程继续运行时,下一个文件将开始加载。

编辑:如果您需要从Ruby运行任意命令行代码,您只需执行以下操作:

Dir['*.rb'].each{ |f| `rails r #{f}` }

同样,内核backtick command将等到进程完成后再返回。