External Model Definition Using ActiveRecord

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

Elizabeth wrote:

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.

On Aug 18, 3:32 am, Brian C. [email protected] wrote:

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.

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


Posted viahttp://www.ruby-forum.com/.

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

Elizabeth

Elizabeth wrote:

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.

On Tue, 2009-08-18 at 13:25 +0900, Elizabeth wrote:

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