How Will You Know You're Done?
Finally, how do you know when you're done? In all things pragmatic, we need feedback to know when we're done. In this case, just setting a goal of "learning xyz" isn't sufficient. For instance, instead of saying you want to learn Ruby, set a concrete goal like you want to "be able to write a web-based application that manages your to-do list in Ruby." Give yourself a timeline. For instance, write "hello world" on the first day, a small program with unit tests during the first week, and the big web-application at the end of the month.
After achieving this milestone, re-evaluate and reiterate what else you need to learn. Learning is an open-ended activity, of course, so you're never really "done." But if you can set some concrete, achievable milestones and meet them, you'll be in a good position to create the next set, and so on.
You'll be learning a lot—deliberately, not by accident—and your skills and your career will be in much better shape.