0
我有一個resque任務來解壓文件。當絕對文件名中沒有空格時,此任務完美工作;但是,如果名稱中有空格,則會失敗。我在反引號中引用了文件名中的引號(見下文),但這似乎沒有在resque任務上有所作爲。更奇怪的是,我可以在控制檯中運行確切的命令,並且它完美地工作。反引號中的文件名引號在resque任務中未被識別,但在控制檯中工作
這是我的代碼。在下面的f.filename = '拉塞爾/人工原AIPS /批次1/rbrl-999-ER-000001_bag.61440.tar.bz2':
f = JobFile.find(id)
output = `tar xjf "#{File.join('/', 'storage', f.filename)}" -C /working 2>&1`
在控制檯運行:
2.3.0 :009 > output = `tar xjf "#{File.join('/', 'storage', f.filename)}" -C /working 2>&1`
=> ""
輸出的內容運行resque任務後:
tar (child): /storage/russell/artificial-proto-aips/Batch: Cannot open: No such file or directory\ntar (child): Error is not recoverable: exiting now\ntar: Child returned status 2\ntar: Error is not recoverable: exiting now\n
我必須承認,我感到相當這種行爲感到困惑,但我不想告訴我的用戶不要在目錄名稱中使用空格(如就像我想的那樣)。
有什麼建議嗎?