# IRB and rb files

**URL:** <https://www.ruby-forum.com/t/irb-and-rb-files/64706>\
**Category:** Ruby\
**Created:** [August 15, 2006, 2:17pm UTC](https://www.ruby-forum.com/t/irb-and-rb-files/64706 "2006-08-15T14:17:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ClassRubyExceptionH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/bc79bd/32.png) [@ClassRubyExceptionH](https://www.ruby-forum.com/u/ClassRubyExceptionH)\
**Post date:** [August 15, 2006, 2:17pm UTC](https://www.ruby-forum.com/t/irb-and-rb-files/64706/1 "2006-08-15T14:17:58Z")

</div>

As I make my way through the Pragmatic Programmer’s Guide I am puzzled  
by the following issue:

If I type in a Ruby program such as

class Song  
def initialize(name, artist, duration)  
@name = name  
@artist = artist  
@duration = duration  
end  
end

And save it as Song.rb in a directory on my hard drive reserved for  
Ruby code, I wonder how I can use it from irb, if possible. I know  
that I can type in each line of the .rb program within irb and have it  
work when I do song = Song.new(“Bicylops”, “Fleck”, 260)  
But if I attempt to type this in from irb after defining the class in a  
separate .rb file I get  
irb(main):001:0\> song = Song.new(“Bicylops”, “Fleck”, 260)  
NameError: uninitialized constant Song  
from (irb):1  
from :0

What I would like to know is, how can I use Ruby P.s which are  
already created as source within irb… or is there a better way to run  
ruby programs

---

<div class="post-metadata">

**Author:** ![ClassRubyExceptionH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/bc79bd/32.png) [@ClassRubyExceptionH](https://www.ruby-forum.com/u/ClassRubyExceptionH)\
**Post date:** [August 15, 2006, 2:17pm UTC](https://www.ruby-forum.com/t/irb-and-rb-files/64706/2 "2006-08-15T14:17:58Z")

</div>

Hello,

On 8/12/06, ClassRubyExceptionHandline [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> @duration = duration
> 
> ```
> 
> NameError: uninitialized constant Song  
> from (irb):1  
> from :0
> 
> What I would like to know is, how can I use Ruby P.s which are  
> already created as source within irb… or is there a better way to run  
> ruby programs

You can use require.

Example:  
require ‘path/to/song’

Michael G.

---

<div class="post-metadata">

**Author:** ![ClassRubyExceptionH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/bc79bd/32.png) [@ClassRubyExceptionH](https://www.ruby-forum.com/u/ClassRubyExceptionH)\
**Post date:** [August 15, 2006, 2:17pm UTC](https://www.ruby-forum.com/t/irb-and-rb-files/64706/3 "2006-08-15T14:17:59Z")

</div>

I thought you use the load command ?

Stuart

---

<div class="post-metadata">

**Author:** ![ClassRubyExceptionH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/bc79bd/32.png) [@ClassRubyExceptionH](https://www.ruby-forum.com/u/ClassRubyExceptionH)\
**Post date:** [August 15, 2006, 2:17pm UTC](https://www.ruby-forum.com/t/irb-and-rb-files/64706/4 "2006-08-15T14:17:59Z")

</div>

On Aug 12, 2006, at 9:32 AM, Dark A. wrote:

> I thought you use the load command ?
> 
> Stuart

Either will work, but ‘load’ will reload the file even if it’s  
already been loaded. ‘require’ only loads the file once.

:dudley
