All you have to do is use rundll32.exe calling the relevant function in user32.dll. I don't remember specifically what the logoff function is called on XP, I know that it used to be:
rundll32.exe user32.dll ExitWindowsEx
This function still remains in user32.dll, but seems to do very little - maybe I'm missing some arguments.
I have seen a number of tools missing from XP Home edition, so the following may work on professional only:
shutdown -l (-f)
If you want to run these commands on a remote machine, you will need to authenticate with IPC$ on the machine first:
net use \\machine\IPC$ /user:username (/savecred)
You will be prompted for a password with the above. On XP Pro, you can save these in Control Panel -> Users, under "Manage my network passwords".
You can then use the 'at' command to run a command on a remote machine at a particular time, e.g.
at \\machine 14:00 "shutdown -l -f"
You can also schedule these using the at command, and query remotes using "at \\remote".
There is no substitute for native interfaces
On the 'using ruby' front, you could ensure that this happens on the machines by having ruby parse the output of the at command for you. You could also attempt the approach of running drb sessions on each host, however, given that the system is already running an RPC stack built for the purpose, I would say this would be a waste of time.