2016-03-02 30 views
0

我試圖創建一個gem,我的gem需要一個不同的gem,我已經添加到gemspec中。模塊自動將名稱空間添加到正在調用的方法中

我的問題是,當我嘗試調用裏面的代碼的方法,紅寶石會自動將模塊命名空間我打電話的方法,然後我得到一個未初始化的恆定誤差。我舉了一個下面發生的事情的基本例子。

的lib/example_gem.rb

module FooModule 

    def bar 
    # this is the method I am trying to run 
    BAZ::Request.execute(123) 
    end 
end 

class Test 
    include FooModule  
end 

x = Test.new 
x.bar 

=>>>>>>>> uninitialized constant FooModule::Baz (NameError) 

我並不想叫FooModule ::巴茲,我想打電話給BAZ :: Request.execute(123)。任何幫助,將不勝感激

回答

2

嘗試:

::BAZ::Request.execute(123) 

的關鍵詞是 「常量查找操作」。我認爲BAZ不裹到另一個類或模塊,所以你需要尋找它的最頂層。因此,您需要加入::

現在你明白爲什麼請求(BAZ::Request)需要在BAZ之內。

+0

這個工作,感謝您的幫助和解釋 – xeroshogun

相關問題