[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

How to share a collection of model files across many apps?

Elliott Blatt

3/23/2007 3:24:00 PM

Hi,

I've got three files that (a.rb, b.rb, c.rb) that currently live in
app/models.
I'd like these models to shared by multiple rails apps. These models are
associated with a separate database.

My rails projects are contained in a directory that looks like this:

projects/

proj1/ proj2/ proj3/ common/


common/
a.rb b.rb c.rb


My idea is to do this:

In proj1/lib/, symlink to ../../common/

lib/
common/ (which is a symlink)


My question is:
How do I tell rails to load the files pointed to by the symlink named
'common' in the lib directory?


I've tried:

cofig/environment.rb

include 'lib/common'

Thanks for your input.
EB

--
Posted via http://www.ruby-....

3 Answers

Phillip Gawlowski

3/23/2007 4:58:00 PM

0

Elliott Blatt wrote:
> Hi,
>
> I've got three files that (a.rb, b.rb, c.rb) that currently live in
> app/models.
> I'd like these models to shared by multiple rails apps. These models are
> associated with a separate database.
>
> My rails projects are contained in a directory that looks like this:
>
> projects/
>
> proj1/ proj2/ proj3/ common/
>
>
> common/
> a.rb b.rb c.rb
>
>
> My idea is to do this:
>
> In proj1/lib/, symlink to ../../common/
>
> lib/
> common/ (which is a symlink)
>
>
> My question is:
> How do I tell rails to load the files pointed to by the symlink named
> 'common' in the lib directory?

First, you might want to ask this at the Rails Mailinglist.

Secondly, your solution wouldn't be portable, as only Unixes (MacOS,
HP-UX, OpenSolaris, Linux) understand symlinks. Windows doesn't
understand POSIX symlinks at all.


--
Phillip "CynicalRyan" Gawlowski

Rule of Open-Source Programming #15:

If you like it, let the author know. If you hate it, let the author
know why.

RubyTalk@gmail.com

3/23/2007 5:44:00 PM

0

On 3/23/07, Elliott Blatt <elliott_blatt@yahoo.com> wrote:
> Hi,
>
> I've got three files that (a.rb, b.rb, c.rb) that currently live in
> app/models.
> I'd like these models to shared by multiple rails apps. These models are
> associated with a separate database.
>
> My rails projects are contained in a directory that looks like this:
>
> projects/
>
> proj1/ proj2/ proj3/ common/
>
>
> common/
> a.rb b.rb c.rb
>
>
> My idea is to do this:
>
> In proj1/lib/, symlink to ../../common/
>
> lib/
> common/ (which is a symlink)
>
>
> My question is:
> How do I tell rails to load the files pointed to by the symlink named
> 'common' in the lib directory?
>
>
> I've tried:
>
> cofig/environment.rb
>
> include 'lib/common'
>
> Thanks for your input.
> EB
>
> --
> Posted via http://www.ruby-....
>
>

If you are using svn:

svn externals works well for this. I would create a tag of the libs so
when you create tags of your projects you will not have to change the
external -r option.

http://svnbook.red-bean.com/en/1.0/ch...

There are unix programs that will keep directories synced.

Stephen Becker IV

Brian Candler

3/23/2007 8:44:00 PM

0

On Sat, Mar 24, 2007 at 12:24:27AM +0900, Elliott Blatt wrote:
> I've got three files that (a.rb, b.rb, c.rb) that currently live in
> app/models.
> I'd like these models to shared by multiple rails apps. These models are
> associated with a separate database.
>
> My rails projects are contained in a directory that looks like this:
>
> projects/
>
> proj1/ proj2/ proj3/ common/
>
>
> common/
> a.rb b.rb c.rb
>
>
> My idea is to do this:
>
> In proj1/lib/, symlink to ../../common/
>
> lib/
> common/ (which is a symlink)
>
>
> My question is:
> How do I tell rails to load the files pointed to by the symlink named
> 'common' in the lib directory?

I'm going to have to do something like this soon.

Personally I want to avoid symlinks, and I think what you want should be
possible simply by adding the appropriate directory to config.load_paths,
e.g.

config.load_paths << "#{RAILS_ROOT}/../common/app/models"

Now, if you enter "site:rubyonrails.com config.load_paths" into Google,
there are two hits, and the second one looks like a Wiki page which explains
exactly this. Unfortunately, when I follow it at the moment all I see is
"Application error (Rails)" :-(

But the 'Cached' link on Google works.

Another idea. If the model is called common/app/models/foo.rb, then you can
create stub files {proj1,proj2,proj3}/app/models/foo.rb which just contain
a single line:

require "#{RAILS_ROOT}/../common/app/models/foo.rb"

or even something which does a sub() on __FILE__

Regards,

Brian.