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.
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:
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 Keeney <devi.webmaster@gmail.com> 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.