rails / tailwindcss-rails

Other
1.37k stars 165 forks source link

Rescue from `Interrupt` in `tailwindcss:watch` #336

Closed davidcelis closed 4 months ago

davidcelis commented 5 months ago

When sending a SIGINT to end the rake tailwindcss:watch (or, for modern Procfile-based Rails applications, bin/dev) task, Ruby processes this via an Interrupt exception that can be rescued to handle gracefully tearing the process down. The tailwindcss:watch task, however, does not handle this exception, so when the task (or Rails' server via bin/dev) is terminated via the standard practice of using ^C, that exception propagates and causes tailwindcss:watch to exit 1. For some (including myself), it's also resulting in a large backtrace; this can erroneously lead developers to think something is wrong.

This patch fixes #318 by rescuing Interrupt exceptions, which I've verified in my own applications that use this gem. It didn't seem like there's any necessary teardown that needs to happen upon quitting the process, so I left the rescue clause blank except for a log line when in verbose mode. I'm happy to make any necessary changes there, however! Additionally, if that rescue should occur elsewhere (e.g. directly in exe/tailwindcss), I'm happy to move it there (I wasn't sure if that's where it belonged, as the other commands aren't meant to run indefinitely until killed).

flavorjones commented 4 months ago

This seems great, thank you!

flavorjones commented 4 months ago

I've also pushed a change to the CHANGELOG properly crediting you with the change. Thanks again!