[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Big project in ruby

Miquel Oliete

1/11/2007 5:18:00 PM

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...

3 Answers

Robert Klemme

1/11/2007 5:22:00 PM

0

On 11.01.2007 18:18, Miquel wrote:
> 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

Chris Hulan

1/11/2007 5:41:00 PM

0

Robert Klemme wrote:
> On 11.01.2007 18:18, Miquel wrote:
> > 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"?
>
> 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

jgbailey

1/11/2007 6:45:00 PM

0

On 1/11/07, ChrisH <chris.hulan@gmail.com> wrote:
> 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