# A novice's question about load

**URL:** <https://www.ruby-forum.com/t/a-novices-question-about-load/179885>\
**Category:** Ruby\
**Created:** [December 7, 2009, 6:09am UTC](https://www.ruby-forum.com/t/a-novices-question-about-load/179885 "2009-12-07T06:09:51Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![shiki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5fc32e/32.png) [@shiki](https://www.ruby-forum.com/u/shiki)\
**Post date:** [December 7, 2009, 6:09am UTC](https://www.ruby-forum.com/t/a-novices-question-about-load/179885/1 "2009-12-07T06:09:51Z")

</div>

Hello All

I have two source files in the same directory: a.rb and b.rb

The content of a.rb is as follow:

puts “Hello form a.rb”

and b.rb is

load ‘a’  
puts “Hello from b.rb”  
load ‘a’  
puts ‘Hello again from b.rb’

When I run the b.rb, It cause a LoadError: no such file to load  
But if I replace ‘a’ with ‘a.rb’ in b.rb, the program run successfully.  
It really confuse me.

My ruby version: ruby 1.8.6

Thanks in advance for your help!

---

<div class="post-metadata">

**Author:** ![shiki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5fc32e/32.png) [@shiki](https://www.ruby-forum.com/u/shiki)\
**Post date:** [December 7, 2009, 6:46am UTC](https://www.ruby-forum.com/t/a-novices-question-about-load/179885/2 "2009-12-07T06:46:06Z")

</div>

Kernel.load doesn’t fill in gap of .rb or .so.  
Its spec of ruby.

Thank you

* * *

Ayumu AIZAWA  
[twitter.com/ayumin](http://twitter.com/ayumin)

2009/12/7 Donghui O. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

---

<div class="post-metadata">

**Author:** ![shiki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5fc32e/32.png) [@shiki](https://www.ruby-forum.com/u/shiki)\
**Post date:** [December 7, 2009, 6:54am UTC](https://www.ruby-forum.com/t/a-novices-question-about-load/179885/3 "2009-12-07T06:54:53Z")

</div>

Evening Donghui,

On Sun, Dec 6, 2009 at 9:09 PM, Donghui O.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)wrote:

> load ‘a’  
> puts “Hello from b.rb”  
> load ‘a’  
> puts ‘Hello again from b.rb’
> 
> When I run the b.rb, It cause a LoadError: no such file to load  
> But if I replace ‘a’ with ‘a.rb’ in b.rb, the program run successfully.  
> It really confuse me.

I assume your confusion is why when you use require the .rb is not  
needed  
while for loaded it is. Require is for pulling in libraries and thus the  
parameter to require is the library name which ruby then takes and  
attempts  
to find by adding .rb, or a library extension (.so on linux, .dll on  
windows  
and such). Load on the other hand is specifically for the loading of  
files  
and therefore a full filename is needed to be passed.

You’ll also find that while require will only load a library once - the  
load  
command will load a file as many times as it is called.

Hope things help clear things up

John

---

<div class="post-metadata">

**Author:** ![shiki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5fc32e/32.png) [@shiki](https://www.ruby-forum.com/u/shiki)\
**Post date:** [December 7, 2009, 11:23am UTC](https://www.ruby-forum.com/t/a-novices-question-about-load/179885/4 "2009-12-07T11:23:30Z")

</div>

Hi,

Am Montag, 07. Dez 2009, 14:09:53 +0900 schrieb Donghui O.:

> When I run the b.rb, It cause a LoadError: no such file to load  
> But if I replace ‘a’ with ‘a.rb’ in b.rb, the program run successfully.

The most has been said already.

- “require” loads once, “load” everytime.
- only “require” will try to add “.rb”, “.so”, etc.
- both “require” and “load” will search the “$:” path.

“$:” is equivalent to “$LOAD\_PATH”.

Bertram

---

<div class="post-metadata">

**Author:** ![shiki](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/5fc32e/32.png) [@shiki](https://www.ruby-forum.com/u/shiki)\
**Post date:** [December 7, 2009, 2:10pm UTC](https://www.ruby-forum.com/t/a-novices-question-about-load/179885/5 "2009-12-07T14:10:24Z")

</div>

Thanks a lotï¼Œ your answers are really helpful to me.  
And John, I’m most grateful to you for your help.
