2011-11-29 50 views

回答

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

每個文件將被完全運行;代碼將不會繼續下一次迭代,直到當前文件被完全加載並執行。

唯一需要注意的是,如果你有一個啓動一個新線程的文件,並且它不是.join它;在線程完成之前,Ruby文件通常會退出;在這種情況下,下一個文件將在線程繼續運行時開始加載。

編輯:如果您需要運行在Ruby中任意命令行代碼,你可以簡單地做:

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

再次,內核backtick command會等到進程完成後才返回。

+0

我發現[解決方案](https://gist.github.com/1405766),但我更喜歡你。謝謝!! –

+0

@GreggoryRothmeier鏈接的解決方案在'rails'下運行文件;你是否需要真正啓動新的Rails站點(它們不會自行關閉),還是隻運行普通的Ruby代碼? – Phrogz

+0

我剛回來問你這件事。我確實需要使用「rails r」運行腳本。有沒有一個簡潔的方式做或我應該使用我的方法(但循環即[這裏](https://gist.github.com/1405798))? –