Thanks for all the help. After reading through your comments, I got it working this morning.
Bash is my normal login shell, though I have some cruft in my home dir from my previous Mac that initially had tcsh back in 10.1 days.
I had a TM_RUBY set for /usr/local/bin/ruby, which is the copy of ruby I installed for developing rails stuff (1.8.4, need to update that). It seemed to me like this was correct, but in case it was an issue, since somebody mentioned the Apple installed one at /usr/bin/ ruby, I cleared out that environment variable.
What actually fixed things, though, was thinking about Allan's mention of corrupted paths and cleaning up my shell startup files. I renamed an old .cshrc from my previous Mac to inactivate it but retain some bits just in case I ever need them. I had mostly redundant .bash_profile and .bash_login contents (don't remember why I did that), so I renamed the .bash_login to keep it from getting considered. I commented out a couple of dumb aliases in .bashrc that were accounted for by the path in .bash_profile.
After this housekeeping, I restarted, started up Textmate, and ran a test ruby script. It worked and ran under my /usr/local/bin installation of ruby.
I also retested in Python and Perl and the run command is working for all three now. It's still a bit mysterious to me why my messy shell files started being a problem, since Ruby had been working fine for Textmate previously, but the cleanup solved it.