[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Dynamically load methods from external source

Daniel Shackelford

1/10/2007 4:52:00 PM

I know this sounds like it could be a very bad thing to do, but I was
wondering if there is a way to load methods into an already running app
from an external source (database/file). I am building an app that
would load needed code snippets for a given task, but each time it runs
it will not need all the snippets, just certain ones. I know that I can
store the code as text in the database/file, but will I have to execute
it externally (via system 'ruby file.rb arg1 arg2'), or can I load and
execute it internally (possibly in a separate thread)? I can think of
all sorts of reasons why to NOT do this, but still, there is curiosity
isn't there..

I am thinking that somehow Rails does something like this with it's
controllers, but heck, that is a lot of code to sort through.

--
Daniel Shackelford
Systems Administrator
Technology Services
Spring Arbor University



2 Answers

Dr. D

1/10/2007 5:13:00 PM

0


I have a long running ruby process which does just this. There's a drb
port open on the process. If a method is changed, I open an irb
session, connect to drb, and run "load" on the remote process to reload
the file containing the changed methods. To reduce the typing I have
an rload method in the object exposed by drb.


Daniel Shackelford wrote:
> I know this sounds like it could be a very bad thing to do, but I was
> wondering if there is a way to load methods into an already running app
> from an external source (database/file). I am building an app that
> would load needed code snippets for a given task, but each time it runs
> it will not need all the snippets, just certain ones. I know that I can
> store the code as text in the database/file, but will I have to execute
> it externally (via system 'ruby file.rb arg1 arg2'), or can I load and
> execute it internally (possibly in a separate thread)? I can think of
> all sorts of reasons why to NOT do this, but still, there is curiosity
> isn't there..
>
> I am thinking that somehow Rails does something like this with it's
> controllers, but heck, that is a lot of code to sort through.
>
> --
> Daniel Shackelford
> Systems Administrator
> Technology Services
> Spring Arbor University

Jano Svitok

1/10/2007 5:22:00 PM

0

On 1/10/07, Daniel Shackelford <dshackel@arbor.edu> wrote:
> I know this sounds like it could be a very bad thing to do, but I was
> wondering if there is a way to load methods into an already running app
> from an external source (database/file). I am building an app that
> would load needed code snippets for a given task, but each time it runs
> it will not need all the snippets, just certain ones. I know that I can
> store the code as text in the database/file, but will I have to execute
> it externally (via system 'ruby file.rb arg1 arg2'), or can I load and
> execute it internally (possibly in a separate thread)? I can think of
> all sorts of reasons why to NOT do this, but still, there is curiosity
> isn't there..
>
> I am thinking that somehow Rails does something like this with it's
> controllers, but heck, that is a lot of code to sort through.

use Kernel#eval for loading* code from string,
load/require to load code from file.
(require will load just once, load will more times)

loading = load and execute