On 1.9:
spawn('env', :unsetenv_others => true)
will unset all the environment variables.
Posix::Spawn::spawn('env', :unsetenv_others => true} does not unset all the variables. Looking at the C, you only test for the variable if an ENV is passed in. I'm not savvy enough to provide a patch. As a workaround you can pass in a hash with a dummy key (an empty hash also does not clear the environment, which should probably be another test case.)