2012-09-12 155 views
-1

[解決:請參閱下面我的評論]紅寶石寶石與Acroynym在名稱

我創建了一個Ruby寶石連接到我的應用程序的API:my_app_api。我想這樣使用它:MyAppAPI::Foo.bar()。不過,我得到:

NameError: uninitialized constant MyAppAPI 

我知道標準方法來調用/名,這將是MyAppApi::Foo.bar(),但我更願意保持與縮寫類的命名規則。我如何指定/加載模塊?

僅供參考,類看起來是這樣的:

module MyAppAPI 

class Foo < ActiveResource::Base 
extend MyAppAPI 

self.site = 'http://localhost:3000/api/' 
self.format = :json 

class << self 

    def bar 
    return 'huzzah!' 
    end 

end 

    end 
end 

而且my_app_api.rb文件看起來像這樣:

require "rubygems" 
require 'active_resource' 

require 'my_app_api/foo' 
+0

看起來這實際上是RVM問題的結果(我在全局gemset中安裝了gem的舊版本,而且沒有安裝)。感謝您的想法! – ideaoforder

回答

0

您是否嘗試加載寶石正常的方式?

require 'my_app_api' 
MyAppAPI::Foo.bar() 

常量名MyAppAPI是好的,是沒有問題的原因。有噸的Ruby核心類的/有首字母縮寫在其名稱中的模塊:

+0

我用代碼示例更新了這個問題。這個問題肯定與常量名有關,因爲如果我在類聲明中調整命名,MyAppApi :: Foo.bar()可以正常工作。我確信這是非常簡單的事情 - 有些地方我沒有聲明一些東西。我知道這是微不足道的,而且在其他地方工作得很好 - 我只是不確定我需要做什麼改變。 – ideaoforder

0

試試你的require陳述後,宣佈在my_app_api.rb空模塊:

module MyAppAPI 
end 

T如果你依賴動態類和模塊加載機制(如Rails使用),他可能會有所幫助。

我假設你的應用程序明確地調用了require "my_app_api"。這是什麼類型的應用程序,你在哪裏做require