There are a few ways to do this.
Load path
The way ruby looks for files is by searching it's load path. The load path is a collection of directories for which when you say 'require "my_file"' it will look through to find the matching file.
To see what is in your load path you can add:
puts $LOAD_PATH
or
puts $:
In your case you want to add the lib folder to your load path. So in your page_downloader.rb script is the one being executed you should add lib to your loadpath.
$:.unshift( File.expand_path('../lib', __FILE__) )
What this line does is prepend the lib directory to the load path. So this will be the first directory checked for files. From there you don't need to change your 'lib/page_retriever.rb' file.
Require absolute paths
A slightly ugly solution is to use absolute file paths for each file. Something like:
require file.expand_path('../lib/page_retriever', __FILE__)
Use require_relative
Require relative is a handy little tool to require files relative to the current file docs.
require_relative 'lib/page_retriever'
I hope that helps point in the right direction.
Edit:
If you are using this in a rails app the chances are that when you use it the rails environment will be loaded anyway. Rails by default adds 'lib' to the load path so if loaded from the rails environment it should work. If you are using this from a rake task or script that is something simply shipped with a rails app then you'll need to set up the load path yourself.