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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erkannte ich meinen Fehler sofort, aber wenn schon mal jemand braucht diese Antwort:
Ihrem system Befehl sollte "ruby blahblahblah.rb" nicht "irb-blahblahblah.rb". Beide code ausführen, aber irb zurück exit-status 0, es sei denn, Sie abzubrechen.