在另一个模块内调用模块

时间:2011-02-07 17:58:48

标签: ruby jruby

我在另一个模块的模块中调用一个方法,并且遇到了一个奇怪的错误。

 require 'nmap'
 ...    
 module Enumeration::Hostnames
   def reverse_dns ip_addrs
     ...
     ip_addrs.each do |ip_addr|
        list = ListScan.test ip_addr #this is the problem
        ...
     end
     ...

ListScan位于nmap文件中。

  module ListScan
  def ListScan.test target
    target = '-sL ' + target
    ListScan::parse_results Nmap::Parser.parsescan('nmap',target)
  end
  ...
  end

错误是`const_missing':未初始化的常量Enumeration :: Hostnames :: ListScan(NameError)行ListScan.test ip_addr。

为什么假设ListScan在Enumeration :: Hostnames模块中?将ListScan混合到主机名不起作用。

1 个答案:

答案 0 :(得分:1)

Ruby从当前上下文开始搜索常量,在本例中为Enumeration::Hostnames

尝试使用

::ListScan.test ip_address