私は簡単なRailsアプリを書いていますが、実行されたコマンドの成功をどのように検証できるか疑問に思っていました. 私が実行している 2 つのコマンドは、SVN の更新と、あるディレクトリから別のディレクトリへの cp です。
1082 次
4 に答える
8
Kernel.system()メソッドを使用すると、コマンドの成功を示すブール値が返されます。
result = system("cp -r dir1 dir2")
if(result)
#do the next thing
else
# handle the error
ここには、さまざまなrubyシステムコマンドの優れた比較があります。
于 2008-10-05T02:32:54.133 に答える
2
外部コマンドをどのように実行していますか?Rubysystem()
関数は、コマンドが成功したかどうかに応じて、true
または戻ります。false
さらに、$?
エラーステータスが含まれています。
于 2008-10-05T02:31:12.640 に答える
1
- 念のために言うと、現在のプログラムを 'd コマンドに置き換える
exec
ため、'd コマンドを検証することはできません。そのため、コマンドは検証のために Ruby に返されることはありません。exec
exec
- 少なくとも cp については、シェルにドロップするよりも、FileUtils モジュール (Ruby 標準ライブラリの一部) を使用する方がよいでしょう。
- 上記のように、事前定義された変数は、またはバッククォート演算子
$?
によって実行される最後のコマンドのリターン コードを提供します。system()
于 2008-10-05T04:02:30.833 に答える
-4
SVNの更新は、更新前後のバージョン番号を確認してください。
svn_start_version = IO.popen("svn info").readlines[4]
`svn update`
svn_end_version = IO.popen("svn info").readlines[4]
if svn_end_version > svn_start_version
"success"
end
cpの場合、元のファイルがコピーされたファイルと等しいかどうかのファイルサイズチェックを行うことができます。
source_file_size = IO.popen("du file1").readlines
`cp file1 file2`
dest_file_size = IO.popen("du file2").readlines
if dest_file_size == source_file_size
"success"
end
于 2008-10-05T02:16:33.513 に答える