Forum: Ruby Big project in ruby

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
4700a6b63cdfed10da56cab904142479?d=identicon&s=25 Miquel (Guest)
on 2007-01-19 16:31
(Received via mailing list)
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
573b9499030e1ccb867ef80f0ff1ac49?d=identicon&s=25 Justin Bailey (Guest)
on 2007-09-25 22:32
(Received via mailing list)
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
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2007-09-25 22:41
(Received via mailing list)
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
23172b6630dc631a134c9bad2fec2a39?d=identicon&s=25 ChrisH (Guest)
on 2007-09-25 22:52
(Received via mailing list)
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
This topic is locked and can not be replied to.