External Model Definition Using ActiveRecord

E

Elizabeth

I've been Googling this topic, and I haven't found the answer.

In Rails, the Models are defined in external files. How do you use
externally defined models in Ruby using ActiveRecord. I have a rails
app and a ruby app which will share the model definitions. I want to
use the DRY technique, so I don't want to define them both in the
models directory and inside the Ruby application.

Thanks in advance,
Elizabeth
 
B

Brian Candler

Elizabeth said:
I've been Googling this topic, and I haven't found the answer.

In Rails, the Models are defined in external files. How do you use
externally defined models in Ruby using ActiveRecord. I have a rails
app and a ruby app which will share the model definitions. I want to
use the DRY technique, so I don't want to define them both in the
models directory and inside the Ruby application.

At simplest, just load them:

require 'rubygems'
require 'active_record'
require 'app/models/foo'
require 'app/models/bar'

However you still need to establish_connection to the database in your
app.

Alternatively you may decide to bootstrap the entire Rails environment,
which you can do most easily by running your script like so:

script/runner myscript.rb

Then it will use the config/database.yml entries to connect to the
database as well.

Also, you can use script/console to get an irb session with the models
already wired up.
 
E

Elizabeth

At simplest, just load them:

require 'rubygems'
require 'active_record'
require 'app/models/foo'
require 'app/models/bar'

Thank you! I come from Perl, so I kept thinking use lib. I can
probably look it up, but since you're here, is require 'app/models/*'
possible?
However you still need to establish_connection to the database in your
app.

Alternatively you may decide to bootstrap the entire Rails environment,
which you can do most easily by running your script like so:

   script/runner myscript.rb

Then it will use the config/database.yml entries to connect to the
database as well.

script/runner sounds like it will load a Ruby script using the rails
environment variables? I will look this up! This sounds even more
like what I need!
Also, you can use script/console to get an irb session with the models
already wired up.

:) Too simple, but irb is definitely an under-utilized tool.

Thank you very much! The simple answers are the best, and I very much
think that these will do it.

Elizabeth
 
B

Brian Candler

Elizabeth said:
Thank you! I come from Perl, so I kept thinking use lib. I can
probably look it up, but since you're here, is require 'app/models/*'
possible?

No, you would have to do it yourself, e.g.

Dir["app/models/*.rb"].each do |f|
require File.basename(f, ".rb")
end
script/runner sounds like it will load a Ruby script using the rails
environment variables?

Yes. If you have more detailed questions specifically about Rails
features rather than about the Ruby programming language, they would be
best asked on a Rails mailing list.

Regards,

Brian.
 
M

Martin Boese

I've been Googling this topic, and I haven't found the answer.

In Rails, the Models are defined in external files. How do you use
externally defined models in Ruby using ActiveRecord. I have a rails
app and a ruby app which will share the model definitions. I want to
use the DRY technique, so I don't want to define them both in the
models directory and inside the Ruby application.

I did that by writing a small script that simply copies all models from
rails, puts them into a namespace and generates an initial 'require
file' to autoload them in a rubygems environment.
On the target system then I just install the gem and can reuse all
models in any ruby script.
If models are changed I run that script again and get a new version of
the gem.

Martin
 

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

No members online now.

Forum statistics

Threads
473,969
Messages
2,570,161
Members
46,710
Latest member
bernietqt

Latest Threads

Top