2015-03-02 39 views
1

我正在掃描文件夾中的音頻文件並將它們轉換爲mp3。 在RUBY很有效。 但是,一旦第一次轉碼完成,它會停止整個循環。下面是我的代碼過程的細分。在紅寶石循環中運行幾個'exec'

def scanFolder 
    # lots of code above to get folder list, check for incorrect files etc.. 
    audioFileList.each { 
    |getFile| 

    exec_command = "ffmpeg #{getFile} #{newFileName}" 
    exec exec_command 
    } 
end 

發生什麼事情是,它轉碼它找到的第一個文件,然後停止整個功能。有沒有辦法強制它繼續?

ffmpeg的不運行,並在瞬間準確地完成,所以它不是什麼破

回答

4

exec代替運行給定命令當前進程。例如:

2.0.0-p598 :001 > exec 'echo "hello"' 
hello 
[email protected]:$ 

你可以看到如何exec替換系統echo的IRB然後自動退出。

因此請嘗試使用system代替。這裏使用system相同的例子:

2.0.0-p598 :003 > system 'echo "hello"' 
hello 
=> true 
2.0.0-p598 :004 > 

你可以看到執行命令後我仍然在IRB及其未退出。

這使得您的代碼如下:

def scanFolder 
    # lots of code above to get folder list, check for incorrect files etc.. 
    audioFileList.each { 
    |getFile| 

    exec_command = "ffmpeg #{getFile} #{newFileName}" 
    system exec_command 
    } 
end