hi Austin, thanks very much for your speedy response Austin Ziegler wrote: > On 8/27/05, Iain Dooley <idoo4002 / mail.usyd.edu.au> wrote: > >>rb_require("file.rb"); >> >>to add a constant (class name) to my namespace in an embedded Ruby >>application. If i want to change the implementation details of that >>class without restart my application, how can i unrequire and re-require >>that file? > > > Strictly speaking, you can't. Well, you can't unrequire. However, > since all classes in Ruby are open, you can simply do the C-side > equivalent of Kernel.load. my worry with doing this would be that it would reload the 'Qt' extension that i'm including as well, which takes a while and is done on startup. i've gotten around the problem by replacing my call to rb_require(filename) with: rb_load_file(filename); ruby_exec(); i read here: http://www.rubycentral.com/book/tut_modules.html that the difference between load and require in a Ruby script is that load will load the file everytime where require will do it only once. is there any reason why rb_load_file does not parse the document into the Ruby namespace? my ruby file looks like this: class AssignSomeText < Qt::Object slots 'buttonClicked()' def setParent(parent) @parent = parent end def buttonClicked() @parent.child("textLabel1").text = @parent.child("lineEdit1").text end end if i simply load this file, then AssignSomeText is an undefined constant. if i rb_require() it then AssignSomeText is defined, but if i issue the require command again have changed some implementation details, those changes are not reflected unless i actually restart the application that the ruby interpreter is embedded in cheers iain