2017-08-30 2 views
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` 
=> "" 

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タスクを実行した後、出力の

内容私がしたいのと同じくらい)。

提案がありますか?

答えて

1

しかし、この問題を解明しました。バックチックは/bin/shと呼ぶので、私のbashスタイルのコマンドは失敗していました。 /bin/shを更新して/bin/bashを指摘してください。

関連する問題