Scope Missunderstanding

i got a module x and then a class z and inside this class i do a
Net::HTTP call and it looks for it inside module x … and i am
clueless…

i get uninitialized constant ModuleX::Net::HTTP

i am new to ruby… and i just dont know how the scope works…
or what i am doing wrong

i took a look at the soap module
and it dosent look like it does anything
different than what i am doing…

code>
require ‘uri’
require ‘net/http’

module ModuleX

class Parser
def self.getData(d)
htmldata = self.loadData(d)
end
private
def self.loadData(profile)
url=’’
htmldata = Net::HTTP.get(URI.parse(url))
htmldata.to_s
end
end

end

i advance thanks for shading liggt

On Oct 27, 2009, at 2:32 PM, Vic P.h. wrote:

i got a module x and then a class z and inside this class i do a
Net::HTTP call and it looks for it inside module x … and i am
clueless…

i get uninitialized constant ModuleX::Net::HTTP

I couldn’t replicate that error using your code in ruby 1.8.7 or
in ruby 1.9. What version are you using?

In any case, you can always force constants to be resolved
from the top level by preceding them with two colons:

::Net::HTTP

Gary W.

Hi –

On Wed, 28 Oct 2009, Vic P.h. wrote:

and it dosent look like it does anything
def self.getData(d)
htmldata = self.loadData(d)
end
private
def self.loadData(profile)

That private directive isn’t doing what you think. It governs instance
methods, but you’re defining class methods. If you want a private
class method, you need to declare it private in the class’s singleton
class:

class C
private
def self.talk
puts “hi”
end
class << self
private
def talk_privately
puts “hi privately”
end
end
end

C.talk # “hi”
C.talk_privately # error

 url=''
 htmldata = Net::HTTP.get(URI.parse(url))
 htmldata.to_s

end
end

end

Like Gary, I can’t replicate the constant error you’re getting.

David


The Ruby training with D. Black, G. Brown, J.McAnally
Compleat Jan 22-23, 2010, Tampa, FL
Rubyist http://www.thecompleatrubyist.com

David A. Black/Ruby Power and Light, LLC (http://www.rubypal.com)

Mex Noob Y. wrote:

i got a module x and then a class z and inside this class i do a
Net::HTTP call and it looks for it inside module x … and i am
clueless…

i get uninitialized constant ModuleX::Net::HTTP

Almost certainly you forgot the “require ‘net/http’” in the actualy code
you’re using, or else you have a typo in the ‘Net’ or ‘HTTP’.

Ruby tries both Net::HTTP and ModuleX::Net::HTTP, and will only give
this error if both don’t exist. Hence I don’t believe that you have
actually loaded Net::HTTP.