Saya memiliki tugas menyapu di mana saya melakukan beberapa pemeriksaan di awal, jika salah satu dari cek gagal saya ingin kembali lebih awal dari tugas menyapu, saya tidak ingin menjalankan salah satu kode yang tersisa.
Saya pikir solusinya adalah menempatkan pengembalian di mana saya ingin kembali dari kode tetapi saya mendapatkan kesalahan berikut
unexpected return
break
dan saya mendapat kesalahan ini: rake dibatalkan! break from proc-closure (Lihat jejak lengkap dengan menjalankan tugas dengan --trace)next
hanya berfungsi jika ada "level" blok untuk keluar.Anda dapat menggunakan
abort(message)
dari dalam tugas untuk membatalkan tugas itu dengan pesan.sumber
next
. Suka.Saya cenderung menggunakan
abort
mana yang merupakan alternatif yang lebih baik dalam situasi seperti itu, misalnya:sumber
abort
tanpa keluar dengan1
kode keluar? Tugas Rake sering digunakan di baris perintah untuk menentukan keberhasilan atau kegagalan. Apakah ada yang "sukses"abort
?exit
adalah cara yang baik untuk keluar dengan sukses.Kembali dengan Kesalahan ❌
Jika Anda kembali dengan kesalahan (yaitu kode keluar
1
) Anda ingin menggunakannyaabort
, yang juga mengambil param string opsional yang akan dikeluarkan saat keluar:Di baris perintah:
Kembali dengan Sukses ✅
Jika Anda kembali tanpa kesalahan (yaitu kode keluar
0
) Anda ingin menggunakannyaexit
, yang tidak menggunakan param string.Di baris perintah:
Ini penting jika Anda menggunakan ini dalam pekerjaan cron atau sesuatu yang perlu dilakukan setelahnya berdasarkan apakah tugas menyapu berhasil atau tidak.
sumber
Jika Anda perlu keluar dari beberapa level blok, Anda bisa menggunakan kegagalan .
Sebagai contoh
(Lihat https://stackoverflow.com/a/3753955/11543 .)
sumber
Jika Anda bermaksud keluar dari tugas menyapu tanpa menyebabkan "menyapu dibatalkan!" pesan yang akan dicetak, maka Anda dapat menggunakan "batalkan" atau "keluar". Tapi "batalkan", ketika digunakan dalam blok penyelamat, mengakhiri tugas serta mencetak seluruh kesalahan (bahkan tanpa menggunakan --trace). Jadi "keluar" adalah apa yang saya gunakan.
sumber
Saya menggunakan
next
pendekatan yang disarankan oleh Simone Carletti, karena ketika menguji tugas menyapuabort
, yang sebenarnya hanya pembungkusexit
, bukan perilaku yang diinginkan.Contoh:
sumber