I have a few functions that:
- get the current user's login name
- checks to see what the CPU % of a process is (non the Ruby
process, another process). This includes all the threads that the
process has
- forks a new process
- sees if a process is still running
- gets the utilization percentage of a NIC on the machine
- the load average of the machine
- the number of CPUs on a given machine
This is all working fine on Linux with kernel 2.4. However, the code
doesn't quite run correctly on a 2.6 kernel (not sure why yet). And
forget about OS X and Windows and *BSD.
Are there any good Ruby idioms for managing the separate OS-specific functions?
My first thought:
module SystemSpecificMethods
module Linux
# generic linux functions in here
module 2.4
# linux 2.4 functions in here
end
module 2.6
# linux 2.6 functions in here
end
end
module Windows
# Windows functions here
end
module BSD
# OS X and maybe *BSD functions here
end
end
And then probe (somwhow?) to figure out what OS I'm running on and
then including the correct modules into my code. So, if I were using
Linux 2.6, I'd include SystemSpecificFunctions::Linux and
SystemSpecificFunctions::Linux::2.6.
But I'm sure that's a pretty dumb way of doing it, as I'm not terribly bright.
Joe