在我的應用程序,我有如何在ruby中引用子模塊的「完整路徑」?
VeryUniqueModule::Foo
# and…
VeryUniqueModule::Bar
Foo
和Bar
各自針對不同的服務。我的應用程序的一部分,必須動態地找出指哪些模塊,它幹練做像這樣:
def service_api
# @relevant_object.service is a string that is either 'Foo' or 'Bar'
VeryUniqueModule.const_get(@relevant_object.service)
end
更多關於這個版本。
我剛剛更新了一個庫,它現在有它自己的頂級Foo
類(這是其糟糕的設計)。現在,當我嘗試調用@relevant_object.service_api::A_CONSTANT
時,我的應用抱怨庫的Foo
沒有A_CONSTANT
。
回到service_api
以上 - 我認爲const_get
是返回類本身。其實我知道它是。如果我在irb
中啓動它,一切都如預期的那樣 - 返回值是類本身,我可以在類中調用它。所以...
- 怎麼可能有一個名稱空間衝突的第一個地方?我正在尋找
A_CONSTANT
上的類對象service_api
返回,而不是一個字符串,我eval
ing或類似的東西 - 不應該有任何命名空間問題,我直接指的是一個對象! - 如果這確實是一個問題,我該如何修復
service_api
以便它將返回erm「完整路徑」?
你在做什麼似乎很好。其他地方可能有錯誤。 – 2011-06-13 19:20:34