Eval a file

Basically, I was wondering if it is possible in Ruby to eval a file
without loading the whole thing in memory. I’m trying to avoid
eval(File.new(location).read), but at the same time, I don’t want the
file to contain a named method that could conflict with other named
methods.

-Daniel Brumbaugh K.

Daniel Brumbaugh K. wrote:

Basically, I was wondering if it is possible in Ruby to eval a file
without loading the whole thing in memory. I’m trying to avoid
eval(File.new(location).read), but at the same time, I don’t want the
file to contain a named method that could conflict with other named
methods.

Can’t help with the first part (it may not be possible, AFAIK). But the
second part is easy. Two approaches are:

http://redshift.sourceforge.net/script/
http://codeforpeople.com/lib/ruby/dynaload/

Probably not the best solution, but you could load the code into an
instance of a class. For example, in a file ‘test.rb’:

def my_method
puts “this is my method”
end

Then in your main file (this is in irb, so you’ll need to remove some
stuff)…

class ExternalCode
end
=> nil

x = ExternalCode.new
=> #ExternalCode:0x5b2cb4

x.instance_eval(File.open(‘test.rb’).read)
=> nil

x.my_method
this is my method
=> nil

–Jeremy

On Dec 23, 2007 3:21 PM, Daniel Brumbaugh K.
[email protected] wrote:

Basically, I was wondering if it is possible in Ruby to eval a file
without loading the whole thing in memory. I’m trying to avoid
eval(File.new(location).read), but at the same time, I don’t want the
file to contain a named method that could conflict with other named
methods.

-Daniel Brumbaugh K.


http://www.jeremymcanally.com/

My books:
Ruby in Practice

My free Ruby e-book
http://www.humblelittlerubybook.com/

My blogs:
http://www.mrneighborly.com/
http://www.rubyinpractice.com/

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs