How to split ruby code into multiple files

Hi guys,

my ruby code is now a long file and I’d like to split it into different
smaller files so that I could reuse them in different programs and make
my original code smaller at the same time.

One file should be used as the master and will reference the code of the
other files.

Is it feasible? Do I have to create some sort of a #include command or
create function objects (I just need a code split, I do not want to
create objects).

thank you.

Cedric V. wrote:

create function objects (I just need a code split, I do not want to
create objects).

thank you.

Use the require method to require individual files.

On 20/10/2007, Cedric V. [email protected] wrote:

create function objects (I just need a code split, I do not want to
create objects).

You should create Modules and allow them to be mixins to your Classes
via the “include” word. Example:

Module M
def some_func
“I am some_func”
end
end

class A
include M
end

foo = A.new
puts a.report

If “Module M” were in its own file, you coud then just “require” that
file, for instance.

– Thomas A.

On Sun, 21 Oct 2007 03:49:25 +0900, Thomas A. wrote:

You should create Modules and allow them to be mixins to your Classes
via the “include” word.

Would this be sorta equivalent to creating a package in Java?

-Thufir

Cedric V. wrote:

Hi guys,

my ruby code is now a long file and I’d like to split it into different
smaller files so that I could reuse them in different programs and make
my original code smaller at the same time.

  1. Here’s a simple scheme:

my_lib.rb

def greet
puts “hello world”
end

def show(num)
puts num
end

some_program.rb

require ‘my_lib.rb’

greet #hello world
show(10) #10

But doing it that way can cause problems in this situation:

some_program.rb

require ‘my_lib.rb’

def greet()
puts “hi”
end

greet #hi
show(10) #10

The greet method in some_program.rb hides the greet method in my_lib.rb.
So you can do this instead:

my_lib.rb

module Lib
def Lib.greet
puts “hello world”
end

def Lib.show(num)
puts num
end
end

some_program.rb

require ‘my_lib.rb’

def greet()
puts “Hi”
end

Lib.greet
Lib.show(10)

greet

On 21/10/2007, Thufir [email protected] wrote:

On Sun, 21 Oct 2007 03:49:25 +0900, Thomas A. wrote:

You should create Modules and allow them to be mixins to your Classes
via the “include” word.

Would this be sorta equivalent to creating a package in Java?

Ish. But unlike packages, you get a whole lot more with the use of
Modules. I certainly wouldn’t try and liken them to packages though.

– Thomas A.