ما هي أفضل طريقة للتحقق من محطة القيادة وتشغيل بنجاح في القضبان ؟

StackOverflow https://stackoverflow.com/questions/171343

سؤال

أنا أكتب بسرعة القضبان التطبيق و أتساءل كيف يمكن التحقق من صحة نجاح المديرة أن القيادة.الأمرين أنا على التوالي و إس في تحديث و م أ من دليل واحد إلى آخر.

هل كانت مفيدة؟

المحلول

إذا كنت تستخدم Kernel.system () طريقة فإنه سيعود منطقية مما يدل على نجاح الأمر.

result = system("cp -r dir1 dir2")
if(result)
#do the next thing
else
# handle the error

وهناك مقارنة جيدة من مختلف أوامر النظام روبي <لأ href = "http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html" يختلط = "noreferrer "> هنا .

نصائح أخرى

وكيف حالك تنفيذ الأوامر الخارجية؟ ترجع الدالة system() روبي true أو false اعتمادا على ما إذا كان الأمر ناجحا. بالإضافة إلى ذلك، $? يحتوي على حالة الخطأ.

  1. لمجرد أن يكون متحذلق لا يمكنك صحة exec'd الأمر لأن exec يستبدل البرنامج الحالي مع exec'd الأمر ، وبالتالي فإن الأمر لن يعود إلى روبي من أجل التحقق من الصحة.
  2. ل م أ ، على الأقل ، من المحتمل أن يكون أفضل من استخدام FileUtils وحدة (جزء من روبي المكتبة القياسية) ، بدلا من إسقاط قذيفة.
  3. كما ذكر أعلاه ، $? مسبقا المتغير سوف تعطيك رمز الإرجاع من الماضي الأوامر ليتم تنفيذها من قبل system() أو backtick المشغل.

لتحديث 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

لحزب المحافظين، هل يمكن القيام فحص حجم الملف على الملف الأصلي يجري على قدم المساواة إلى الملف المنسوخ.

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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top