I find ido unusable for find-file, because of how it splits up directory from filename. So I use the builtin completion.
But I rarely open files using find-file anymore. ido-use-virtual-buffers is magical. For commonly opened files it let you use switch-to-buffer whether the file is opened or not.
(require 'recentf)
(recentf-mode t)
(setq recentf-max-saved-items 200)
(setq ido-use-virtual-buffers t) ; include recentf files
While, something like this works better with helm: (require 'yari)
(define-key ruby-mode-map [(meta h)] 'yari-helm)