10

FileUtils コマンドからの戻り値が表示されません。

私は次のようなことをしたいと思います:

really=(gets.chomp=="y")
if really
  success = FileUtils.rm_rf "./PROJECT_#{@name}" #does not work
end
puts "./PROJECT_#{@name} deleted" if success

FileUtilsのドキュメントを読み、「 Ruby FileUtils からコマンドを実行する」も読みましたが、答えの使い方がわかりません。

4

2 に答える 2

1

ドキュメント ( http://ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-rm_rf ) によると、 #rm_rf の呼び出しは、タスクに関連するものを何もエコーしません。取っています。#rm_rf は、実際にはオプション :force => true で #rm_r を呼び出します。このオプションにより、メソッドは StandardError Exception を無視できます (これにより、操作について、または操作が機能しない理由が通知されます)。さて、なぜ失敗したのかに戻ります。誰かがすでにコメントしているように、オプション :secure => true を試してください。これに関する詳細情報: http://ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-remove_entry_secure。これはおそらく許可の問題です。

于 2013-01-25T15:09:44.860 に答える
0

戻り値を確認する必要があると思います。

irb(main):006:0> FileUtils.rm_rf 'test'
=> ["test"]
irb(main):007:0> 

ディレクトリが存在しない場合に例外が発生するかどうかを確認します。

戻り値が必要な場合、おそらく唯一のオプションはruby内でコマンドを実行することです。このブログ投稿をご覧ください。

于 2013-01-24T17:57:34.713 に答える