Using Rails App (Models) in my Ruby script.

N

Nick da G

Hi, All.

I'm writing a script that's going to run on schedule to pull some info
from a db and dump it into a csv to be ftped

And a similar script to process a csv/excel file we get from a vendor to
put in our db.

I can use like Ruby DBI or something.
But I'd much rather use ActiveRecord. Here is the question.

How do I let my ruby script know to include all of my rails goodies.
Like the Model's I already created?

I tried to write a sample where I connect to a db using activerecord and
it works, but it looks like I will have to recreate all of my models in
my Ruby script? Which is not a biggie - jsut copy and paste, but I'd
hate to maintain 2 versions of models.

Also will I run into any problems with my restfull_authentication plugin
doing that if it is possible to do at all (this might be a question for
a Rails list thou)


Thank you
 
T

Todd Benson

Hi, All.

I'm writing a script that's going to run on schedule to pull some info
from a db and dump it into a csv to be ftped

And a similar script to process a csv/excel file we get from a vendor to
put in our db.

I can use like Ruby DBI or something.
But I'd much rather use ActiveRecord. Here is the question.

How do I let my ruby script know to include all of my rails goodies.
Like the Model's I already created?

I tried to write a sample where I connect to a db using activerecord and
it works, but it looks like I will have to recreate all of my models in
my Ruby script? Which is not a biggie - jsut copy and paste, but I'd
hate to maintain 2 versions of models.

Also will I run into any problems with my restfull_authentication plugin
doing that if it is possible to do at all (this might be a question for
a Rails list thou)

You might be able to simple load them (load '/dir_path/my_model.rb').
You can simply get a list of the Model file names, and iterate through
them, loading each one. I've tested Models in irb like that. YMMV.

Todd
 
B

Brian Candler

Nick said:
Hi, All.

I'm writing a script that's going to run on schedule to pull some info
from a db and dump it into a csv to be ftped

And a similar script to process a csv/excel file we get from a vendor to
put in our db.

I can use like Ruby DBI or something.
But I'd much rather use ActiveRecord. Here is the question.

How do I let my ruby script know to include all of my rails goodies.
Like the Model's I already created?

script/runner

(also script/console if you want to have an IRb shell with all the rails
goodies loaded)
 
N

Nick da G

Brian said:
script/runner

(also script/console if you want to have an IRb shell with all the rails
goodies loaded)

Hi Brian, thanks for the reply but I guess I didn't make myself clear.

script/console would load an interactive console - that's waiting for
my input. Not sure how to I would interact with that from my ruby progam
and how to load it from my ruby script.

I looked into script/runner - but as I understand it is for running
Background processing from your rails app - like when you want to
process an uploaded video. In anyways I was not able to find a primer
that would show how to connect to it from my ruby script - the one that
is produced from script/runner -h - doesn't work for me on Mac OS and I
can't find any sensible tutorials or examples.

What I want is to be able to do is : just load some models from my rails
app. Like Product model. so that in my Ruby script I can just do p =
Product.find(2), instead of running DBI code.

Hope that's clearer.

P.S.:
Brian do you know of any links or books that would talk more about
scrip/runner - I obviously already looked at api and rails wiki.
 
N

Nick da G

Ok I just did a search on Ruby Forums and I think I found what I needed.
Thank Brian for sending me in a right direction.


It also looks like my error was related to Mac OS . I tried same code at
work on my XP box and it works now.
Damn I thought I was going crazy.

Thanks for the help thou.


for anyone else looking to setup scheduling on a Windows box for a ruby
script.

Just make your task call
(pass it environment if you want)(and then pass it your great ruby
script - make sure you use aboslute paths )

ruby c:\path to your great rails app\script\runner c:\my great ruby
scripts folder\cron.rb
(or whatever you want to call it. I would suggect to use no spaces in
the folder names - other wise you might need to do fiddle with the extra
quotes and it's annoying)

Alternatively you can setup a .bat file ( if you want to do some extra
stuff in windows batch mode - like driving yourself crazy or something)
 
N

Nick da G

Also this method works cool for scheduled PDF printing - just printed my
first automated invoice, generated from rails to PDF:Writer to color
printer) - work like a charm. I might need to switch it to Linux later,
if we do a lot of heavy printing.
 

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,997
Messages
2,570,240
Members
46,828
Latest member
LauraCastr

Latest Threads

Top