How can I organize my project in the best way?

C

Christoffer Lernö

I'm writing a server for a networked game using ruby, but I keep
running into issues when organizing them.

Basically I have a structure looking a bit like this:

lib/
testclient/
gamemodel/
gamecommands/
server/
utils/
test/
gamemodel/
gamecommands/
server/
utils/


The problem is the paths for the requires.

For a test in say test/gamemodel, I need to require something
like ../../lib/gamemodel/<file>
But when running the same test from some test_all.rb in /test, the
correct require is of course ../lib/gamemodel/<file>
(The natural way would have been to simply write require <file>)

It is possible to fix this problem by appending to the load path, but
this means rows of duplicate code in every test file.

The problem naturally extends to the lib where you also have to decide
where the code supposedly is run from.

Any suggestions on neat ways of solving this problem or are there
perhaps packages available to make this work automatically?


/Christoffer
 
T

Trans

I'm writing a server for a networked game using ruby, but I keep
running into issues when organizing them.

Basically I have a structure looking a bit like this:

lib/
testclient/
gamemodel/
gamecommands/
server/
utils/
test/
gamemodel/
gamecommands/
server/
utils/

The problem is the paths for the requires.

For a test in say test/gamemodel, I need to require something
like ../../lib/gamemodel/<file>
But when running the same test from some test_all.rb in /test, the
correct require is of course ../lib/gamemodel/<file>
(The natural way would have been to simply write require <file>)

It is possible to fix this problem by appending to the load path, but
this means rows of duplicate code in every test file.

The problem naturally extends to the lib where you also have to decide
where the code supposedly is run from.

Any suggestions on neat ways of solving this problem or are there
perhaps packages available to make this work automatically?

/Christoffer

Hi Christoffer,

When testing your lib you should only need to add lib/ to the load
path once. For instance you might do:

ruby -Ilib test/sometest.rb

T.
 
C

Christoffer Lernö

Hi Christoffer,
When testing your lib you should only need to add lib/ to the load
path once. For instance you might do:

ruby -Ilib test/sometest.rb

Yes, but if the test is in

test/client/tc_connect.rb

then I might need to require

test/test_common.rb
lib/client/connect.rb

Again I need to add these libs differently depending on where I start
my test.


/Christoffer
 
T

Trans

Yes, but if the test is in

test/client/tc_connect.rb

then I might need to require

test/test_common.rb

You can add test/ to the load path as well if you need too.
lib/client/connect.rb

This should always be:

require 'client/connect'
Again I need to add these libs differently depending on where I start
my test.

Easiest is to always start from your projects root. Using Rake, for
instance, makes that automatic. But as an example of manually running
a test from within the test location:

$ cd test/client
$ ruby -I../../lib;../../test tc_connect.rb

T.
 
C

Christoffer Lernö

You can add test/ to the load path as well if you need too.

So what you're saying is basically to add everything to the load path =20=

and then run with that?

/Christoffer=
 
F

fedzor

check out the "need" gem! makes these things simple.


I'm writing a server for a networked game using ruby, but I keep =20
running into issues when organizing them.

Basically I have a structure looking a bit like this:

lib/
testclient/
gamemodel/
gamecommands/
server/
utils/
test/
gamemodel/
gamecommands/
server/
utils/


The problem is the paths for the requires.

For a test in say test/gamemodel, I need to require something =20
like ../../lib/gamemodel/<file>
But when running the same test from some test_all.rb in /test, the =20
correct require is of course ../lib/gamemodel/<file>
(The natural way would have been to simply write require <file>)

It is possible to fix this problem by appending to the load path, =20
but this means rows of duplicate code in every test file.

The problem naturally extends to the lib where you also have to =20
decide where the code supposedly is run from.

Any suggestions on neat ways of solving this problem or are there =20
perhaps packages available to make this work automatically?


/Christoffer

~ Ira Rizdal

Go hang a salami, I'm a lasagna hog
 

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

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top