Big project in ruby

M

Miquel

Hi all

I'm trying to design a big application in ruby and I have (among
others) a doubt/question.

I'm creating folders with the classes (I supose influenced by java
package distribution structure) and I want to use them.

So, when I write into a .rb file require 'whatever' I'm using the form
require 'folder_a/folder_b/class_file.rb'. There any ruby
variable which I can write require ruby_var+"/class_file.rb"?

Thanks in advance

Kind regards


Miquel


______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
 
R

Robert Klemme

So, when I write into a .rb file require 'whatever' I'm using the form
require 'folder_a/folder_b/class_file.rb'. There any ruby

You only need

require 'folder_a/folder_b/class_file'
variable which I can write require ruby_var+"/class_file.rb"?

You can use any variable there since require is a function call like any
other - at least from the caller's perspective

ruby_var = 'folder_a/folder_b'
require ruby_var + "/class_file"

Kind regards

robert
 
C

ChrisH

Robert said:
You can use any variable there since require is a function call like any
other - at least from the caller's perspective

ruby_var = 'folder_a/folder_b'
require ruby_var + "/class_file"

They could also add the path to the $LOAD_PATH, i.e:

$LOAD_PATH<<''folder_a/folder_b'
require 'class_file'

cheers
Chris
 
J

Justin Bailey

They could also add the path to the $LOAD_PATH, i.e:

$LOAD_PATH<<''folder_a/folder_b'
require 'class_file'

This can create a problem if you have two files with the same name in
different directories.

I would recommend designing a fixed folder structure for your library,
rooted in one directory, such as:

lib\
package1\
class1.rb
class2.rb
package2\
classA.rb
classB.rb

Each class that might depend on other classes makes a require
statement as if it was rooted in the lib directory. E.g. in
package1\class2.rb, have:

require 'class1' # Current directory always on load path
require 'package2\classA' # File in another directory requires path

To make that work, one file needs to be loaded before others which
adds the full path to the "lib\" directory to the $LOAD_PATH variable
(AKA known as $:).

I recommend creating a small file that just has requires, which is
used to load your library from a given script. Example, imagine your
library lives under an app directory:

app\
main.rb
library.rb
lib\
package1\
package2\
etc.

library.rb would have these contents:

$: << "path to lib\"
require 'package1\class1" # Load initial library files. Not
absolutely necessary.
require 'package2\classA" # Load initial library files. Not
absolutely necessary.

Then in main.rb, which is your app, you can just have this statement
to get your library loaded:

require 'library'

Alternatively, you can make the modifications to $: in your main.rb
file, and then load the library. This skips the step of creating a
"library.rb" file, so main.rb just looks like:

$: << "path to lib\"
require 'package1\class1"
require 'package2\classA"

Hope that helps.

Justin
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

ruby gtk editable cells in treeview 2
Ampersand entities 3
encoding question 1
ruby indentantion 20
Charset detection 4
encoding in windows (newby question) 4
getting volume names in windows 4
newby question 4

Members online

No members online now.

Forum statistics

Threads
473,774
Messages
2,569,598
Members
45,144
Latest member
KetoBaseReviews
Top