From: Lionel Bouton Date: 2008-03-22T00:04:52+09:00 Subject: Re: Test for Internet Connection Cory Cory wrote: >> sudo gem install dbus > > Well after all of that, I can't compile the dbus gem unless I download > and compile the newest version of the real dbus (because the deb is > still out of date). Interfering with my deb's is not something I like > doing because of updates, so I guess I'll just have to wait. > > Maybe Hardy Heron will solve my problems. > > If Ruby just had system threading this would not even be an issue. Your problem isn't clear enough for a good advice : do you need an answer to the "Is net available?" in finite time or do you want to continue processing while you wait for the answer? If you want to continue processing, your only need is a non-blocking communication channel with another process/thread. The usual solution is to use an event loop, in this case something like popen with the ping program or whatever you need would give you the asynchronous behaviour you need. I've a strong opinion on threads (built on several projects where avoiding deadlocks between them took most of my time instead of adding functionnalities): if you can avoid them (don't need the power of several CPU cores and even then multi-process is an option), go for the event-loop. In Ruby's case, where multi-threading doesn't use multiple cores, I only use threads in the simplest conditions (fetching several URIs in parallel with no interlocking for example). If you only need an answer in finite time, see man ping on your OS. Lionel