ファイルを解凍するための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`
=> ""
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
として(私は私はかなりこの行動に困惑しています、認めなければならないが、私は、ディレクトリ名にスペースを使用しないように、私のユーザーに通知する必要はありません:resqueタスクを実行した後、出力の
内容私がしたいのと同じくらい)。
提案がありますか?