 <p>When you <code>require 'something'</code> Ruby searches for a file called either <code>something.rb</code> or <code>something.dll/so/bundle</code> depending on your platform.</p> <p>In case it finds a library <code>dll/so/bundle</code> it dynamically loads it and search for a symbol called <code>Init_something</code>. The convention when creating a native extension is to include such a function which gets used by the ruby interpreter to hook things up.</p> <p>Where (in which directories) the intrepeter looks for rb files and libs is determined by the load path, which you can append using the -I options of the interpreter. At runtime, the current load path is in <code>$:</code> (you can append further directories to this at runtime as well), for example:</p> <pre><code>$ irb irb(main):001:0&gt; puts $: /opt/local/lib/ruby/site_ruby/1.8 /opt/local/lib/ruby/site_ruby/1.8/i686-darwin9 /opt/local/lib/ruby/site_ruby /opt/local/lib/ruby/vendor_ruby/1.8 /opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin9 /opt/local/lib/ruby/vendor_ruby /opt/local/lib/ruby/1.8 /opt/local/lib/ruby/1.8/i686-darwin9 . </code></pre> <p>have a look at the documentation of require (<a href="http://ruby-doc.org/core-1.8.7/classes/Kernel.html#M001077" rel="nofollow noreferrer">http://ruby-doc.org/core-1.8.7/classes/Kernel.html#M001077</a>)</p> <p>I'm not sure what you mean by:</p> <blockquote> <p>P.S. The only exposed part of Ruby I have to work with right now is 'msvcrt-ruby18.dll'</p> </blockquote> <p>Also you mentioned something about sandboxing. This may interfere with your ability to require modules. Search for $SAFE, if $SAFE is set to >2 you won't be able to use <code>require</code> at all.</p>