celluloid / reel

UNMAINTAINED: See celluloid/celluloid#779 - Celluloid::IO-powered web server
https://celluloid.io
MIT License
595 stars 87 forks source link

Support rolling restart and code reload. #48

Closed digitalextremist closed 10 years ago

digitalextremist commented 11 years ago

If signal is sent to server ( or reload method called, or file touched if -H specified ):

If in development environment and option passed to bin/reel or option set for server, reload code on update of included *.rb files and tell console which files changed and were reloaded.

halorgium commented 11 years ago

I would question whether this is supportable in Reel or as a feature in a separate gem. @tarcieri any thoughts?

tarcieri commented 11 years ago

I have more experience than I ever want with Unicorn's hot restarts, and their master/worker-based "zero downtime deploys"

My takeaways are that it's practically impossible to get right. The Unicorn approach won't work on JRuby, and even on Java 7 where permgen leakage through classloaders has been partially fixed, it still doesn't work right.

digitalextremist commented 11 years ago

I am very glad for your experience on this, and deployment/server reliability in general. I will think outside the box for a bit on how to accomplish this in a new or at least cross-platform cross-engine way. Not sure what timeframe this would be done in, but I do think this is (probably one of the few issues I raised) applicable to Reel as a handler.

Will have this in the back of my mind.

halorgium commented 10 years ago

I say we keep this out of the core of Reel.

digitalextremist commented 10 years ago

I have a code reloader I can put up at reel-reloader or put it in reaf.

btw @halorgium, I am trying to get out to PDX toward the end of your trip.