1

Rubyでファイルを削除すると奇妙な状況が発生します。コードは正しく報告されているようですが、物理ファイルがハードドライブから削除されていません。私はrm path/to/fileコマンドラインで行うことができます-それは機能します。Railsコンソールを開いてFile.safe_unlinkファイルを開くこともできますが、これも機能します。Railsアプリ内で、実際のファイルを削除できません。

def destroy
  Rails.logger.debug local_path #=> /Users/ryan/.../public/system/.../file.jpg
  Rails.logger.debug File.exist?(local_path) #=> true
  File.safe_unlink(local_path)
  Rails.logger.debug File.exist?(local_path) #=> false
  # yet the physical file actually STILL exists!
end

物理ファイルはGitリポジトリ内にあります(リポジトリは/ public / system /内に保存されています)。ruby-git gemを使用して、提供されているrmコマンドを使用してファイルを削除しようとしましたが、ファイルも削除されません。

テスト中にファイルのすべてのアクセス許可を開きましたが、まだ何も機能しません。これは、trueを返したFile.writable?(local_path)でも確認しました。

それがファイルの削除を妨げている可能性がある理由について何か考えはありますか?

4

1 に答える 1

1

ディレクトリの権限を確認しましたか?削除はディレクトリ書き込み操作であり、ファイル書き込み操作ではありません。(rmまた、ファイルの権限をチェックし、礼儀として、ファイルが書き込み保護されているかどうかを本当に実行するかどうかを尋ねます。ただし、ディレクトリが書き込み可能でない場合は、拒否されます。)

于 2010-06-22T20:12:52.750 に答える