Hi,
I’m using fxri and I have required a ruby file as follows:
require “c:\myWork\motor.rb”
My question is, how do I reload this file when I make changes?
Thanks.
Hi,
I’m using fxri and I have required a ruby file as follows:
require “c:\myWork\motor.rb”
My question is, how do I reload this file when I make changes?
Thanks.
On 3/2/07, [email protected] [email protected] wrote:
Hi,
I’m using fxri and I have required a ruby file as follows:
require “c:\myWork\motor.rb”
My question is, how do I reload this file when I make changes?
-austin
Alle venerdì 2 marzo 2007, [email protected] ha scritto:
Hi,
I’m using fxri and I have required a ruby file as follows:
require “c:\myWork\motor.rb”
My question is, how do I reload this file when I make changes?
Thanks.
I assume you’re speaking about the irb session embedded in fxri. If I’m
wrong,
my answer won’t be very useful.
I think the cleanest way to reload a file is to use the load method:
load ‘c:\myWork\motor.rb’
(note that with load you need to specify the extension).
Different from require, load doesn’t check whether the file already is
in $"
(the list of required files), although this is not explicitly said in
the ri
documentation, and can’t load C extensions.
Another way to reload the file should be to remove it from $" and use
require.
In both cases, you must be careful. Suppose the file a.rb contains the
following:
—File a.rb—
class C
def method1
“method1”
end
def method2
“method2”
end
end
In the interactive session, you do:
require ‘a’ #you could also do load ‘a.rb’
c=C.new
c.method1
=> “method1”
c.method2
=> “method2”
Then you modify a.rb:
—File a.rb modified—
class C
def method2
“method2”
end
end #you removed the definition of method1
You go back to the interactive session and type
c.method2
=> “method2”
c.method1 #you’d expect a NoMethodError, since the method has been
removed.
=> “method1”
c1=C.new #create a new instance of C using the last definition
c1.method1
=>NoMethodError
The point is that loading the file again doesn’t clear whatever it was
defined
in it the first time it was loaded. I think (but I’m only guessing) that
loading for a second time a file which contains a class or a module
looks a
bit like (but it’s different from) reopening the class or module. For
instance, if in the modified a.rb you’d added the line
undef_method :method1
inside the definition of C, then calling c.method1 would have raised a
NoMethodError.
I hope all this helps
Stefano
Great, thanks.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs