3
我有一個* .rb文件的目錄,我想運行,但是按順序並不是並行。我的想法是有一個調用每個文件的主文件,但是如何強制它在運行下一個文件之前等待該過程完成?按順序在目錄中運行ruby腳本
我有一個* .rb文件的目錄,我想運行,但是按順序並不是並行。我的想法是有一個調用每個文件的主文件,但是如何強制它在運行下一個文件之前等待該過程完成?按順序在目錄中運行ruby腳本
Dir['*.rb'].each{ |f| load(f) }
每個文件將被完全運行;代碼將不會繼續下一次迭代,直到當前文件被完全加載並執行。
唯一需要注意的是,如果你有一個啓動一個新線程的文件,並且它不是.join
它;在線程完成之前,Ruby文件通常會退出;在這種情況下,下一個文件將在線程繼續運行時開始加載。
編輯:如果您需要運行在Ruby中任意命令行代碼,你可以簡單地做:
Dir['*.rb'].each{ |f| `rails r #{f}` }
再次,內核backtick command會等到進程完成後才返回。
我發現[解決方案](https://gist.github.com/1405766),但我更喜歡你。謝謝!! –
@GreggoryRothmeier鏈接的解決方案在'rails'下運行文件;你是否需要真正啓動新的Rails站點(它們不會自行關閉),還是隻運行普通的Ruby代碼? – Phrogz
我剛回來問你這件事。我確實需要使用「rails r」運行腳本。有沒有一個簡潔的方式做或我應該使用我的方法(但循環即[這裏](https://gist.github.com/1405798))? –