My learning process usually works like this:
1) Learn the syntax/guts of a tool by going through a book, tutorial and trying trivial examples.
2) Work until I run into a problem. (How do I make merb-auth work with a flash uploader?)
3) Find examples/read a book/look at API docs until I figure it out. (Ohhh, you write a Rake middleware to handle it!)
4) Goto 2.
So reading materials are important, but I usually use them to solve real problems. There's no part of this process that doesn't involve writing code.