سؤال

هل يمكنني تحديد حالة الخروج من الأنفس في كتلة AT_EXIT؟

at_exit do
  if this_process_status.success?
    print 'Success'
  else
    print 'Failure'
  end
end
هل كانت مفيدة؟

المحلول 2

باستخدام فكرة من تلممان

at_exit do
  if $!.nil? || $!.is_a?(SystemExit) && $!.success?
    print 'success'
  else
    code = $!.is_a?(SystemExit) ? $!.status : 1
    print "failure with code #{code}"
  end
end

نصائح أخرى

على الرغم من أن الوثائق حول هذا هو رقيقة حقا، $! يتم تعيين أن تكون الاستثناء الأخير الذي يحدث، وبعد مكالمة مخرج () هذا استثناء SystemExit. وضع هذين معا تحصل على هذا:

at_exit do
  if ($!.success?)
    print 'Success'
  else
    print 'Failure'
  end
end
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top