Ruby: Rückgabe von null verschiedenen exit-status

Ich würde gerne meine Ruby-Skript, um wieder alle nicht-null exit status, sobald eine bestimmte Bedingung. Der exit-status selbst keine Rolle, solange es nicht null ist. Ich habe getestet, wie es gemacht wird:

test_exit.rb:

exit 4

test_exit_wrap.rb:

system("ruby test_exit.rb")
puts $?.exitstatus

cmd:

> ruby test_exit_wrap.rb
4

Das ist wunderbar, denn es ist genau das, was ich will. Dann habe ich versucht zu replizieren, die in meinem Projekt.

pullrequest.rb:

results = [install_result.class, clicks_result.class, event_result.class, tuples_result.class, match_result.class]

if results.include? NilClass 
    puts "result included nil"
    exit 4
end

rakefile.rb:

command = "irb #{@script} #{@app_id} #{start_date} #{end_date} #{start_time} #{end_time} #{@timezone} #{@database}"
system("#{command}")
puts $?.exitstatus

if $?.exitstatus != 0
    puts "!!!!!!!!!!!!!!!!!!!!!! FAILED JOB !!!!!!!!!!!!!!!!!!!!!!!!!!"
    @backjob_queue << fail
end

cmd:

  pullkochava.rb(main):032:1>  
  result included nil
  => nil
  pullrequest.rb(main):032:0>
  0

(Clipping-diese, natürlich, hoffe, dass es noch Sinn macht; auch @script ist gleich pullrequest.rb habe ich doppelt geprüft) können Wir sehen, dass der wenn-Ergebnisse.gehören? block wird definitiv ausgeführt, aber der Ausgang 4 verloren zu sein scheint. Die 0 stammt aus den puts $?.exitstatus, und ich kann nie bekommen es zurück alles, aber 0. Ich habe versucht, auslösen von Fehlern, unterschiedliche exit-codes, und abort. Abbrechen, zurück, einen von null verschiedenen exit-code, aber es bricht auch die rake. Es stellt FEHLGESCHLAGENEN JOB, aber die rakefile nicht speichern @backjob_queue zu meiner Datenbank.

Bin ich etwas fehlt? Wie kann ich wieder einen von null verschiedenen exit-status, die nicht zum Abbruch der rake?

InformationsquelleAutor Kei | 2015-06-17
Schreibe einen Kommentar