Temporary require ,is it possible?


#1

I have a idea,it is “temporary require”

module Find
 # my define
end

tmp_require("find"){
 #do something with "Find.find" method,temporary!!
}

puts Find # my define,no "Find.find" method

Is it possible?


#2

On Thu, May 24, 2007 at 06:03:22PM +0900, Gpy Good wrote:

puts Find # my define,no “Find.find” method
[/code]
Is it possible?

Hmm, I was thinking of

temp = load(“find.rb”, true)
temp::Find.find(…)

but unfortunately load returns true, not the module object :frowning:

Here’s a messy way:

require ‘find’ # the old implementation of find

#require ‘new_find’ # contains the following:
module NewStuff
module Find
def self.find
puts “hello”
end
end
end

Main program

old_find = Find rescue nil
begin
Find = NewStuff::Find
Find.find # this is the code to be executed
ensure
Find = old_find
end

Find.find(".") { |f| puts f }

?


#3

On May 24, 1:52 am, Brian C. removed_email_address@domain.invalid wrote:

On Thu, May 24, 2007 at 06:03:22PM +0900, Gpy Good wrote:

I have a idea,it is “temporary require”

[code]
module Find

Maybe I’m missing the OP’s goal, but wouldn’t you just use a module
reference directly to get the same result? What’s the benefit of
having a “temporary” require?

Mike B.


#4

Brian C. wrote:

puts Find # my define,no “Find.find” method
[/code]
Is it possible?

Hmm, I was thinking of

temp = load(“find.rb”, true)
temp::Find.find(…)

but unfortunately load returns true, not the module object :frowning:

There’s a way around that. See

http://redshift.sourceforge.net/script/

No magic, just module_eval.

(I’m not sure it solves the OP’s problem, though.)


#5

Maybe this can help to address the OP’s question:

http://raa.ruby-lang.org/gonzui/markup/unrequireable/unrequireable.rb

Best regards,

Axel


#6

On May 24, 2007, at 3:03 AM, Gpy Good wrote:

puts Find # my define,no “Find.find” method
[/code]
Is it possible?


Posted via http://www.ruby-forum.com/.

why not simply fork and do something?

-a


#7

Axel E. wrote:

Maybe this can help to address the OP’s question:

http://raa.ruby-lang.org/gonzui/markup/unrequireable/unrequireable.rb

Best regards,

Axel
Thanks,It seems that my need.
And,but…

def tmp_require(name)
  require 'unrequireable'
  Object::unrequireable!

  require name
  yield
  unrequire name

end

module Find
 def self.info
   "my define"
 end
end

tmp_require("find"){
 Find.find("."){}#should work,need it temporary
}

puts Find.info #my define
Find.find("."){} #should not work(because I dont define it,and not need 
it now ),but it worked

It’s my goal.:slight_smile:


#8

On 5/24/07, Joel VanderWerf removed_email_address@domain.invalid wrote:

}
but unfortunately load returns true, not the module object :frowning:

There’s a way around that. See

http://redshift.sourceforge.net/script/

No magic, just module_eval.

(I’m not sure it solves the OP’s problem, though.)

Somehow this smells to me like a job for Why’s sandbox.
http://code.whytheluckystiff.net/sandbox/

Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/