If you have old simulators from an earlier version of Xcode and no longer have that runtime installed, calling device.runtime will throw an exception:
SimCtl::RuntimeNotFound: Could not find a runtime matching {:identifier=>"com.apple.CoreSimulator.SimRuntime.iOS-11-1"}
I'm not sure what the "correct" behavior is here. The simulator exists (has a directory on-disk and is reported by simctl), but has an invalid runtime.