我有一些問題,擴大與後單獨的模塊實例方法類被列入單獨的類定義在Ruby中已經定義的類之後的類的實例方法
module ActsAsCommentable
def self.included(commentable)
Thread.class_eval do
def commentable
p "disqusable is #{commentable}"
p "disqusable class is #{commentable}"
end
end
end
end
class Thread
#some code...
end
class Asset
include ActsAsCommentable
end
,現在我想調用這個方法somelike這:
thread = Thread.new
thread.commentable
的問題是,當然是沒有用結合包括類eval方法,我可以保存,我想進入ActsAsCommentable模塊類的eval變量,但我不想。有沒有更好的辦法?
我試圖做的,而不是
module ActsAsCommentable
def self.included(commentable)
class << Thread
define_method :commentable do
p "disqusable is #{commentable}"
p "disqusable class is #{commentable}"
end
end
end
end
但正如我猜測這個類的singletone對象創建實例方法,所以我只能通過
Thread.commentable
再次,沒有約束力調用它。 ..
可評論的[主題](http://ruby-doc.org/core-2.0/Thread.html)?這是什麼瘋狂? 您應該選擇一個更具體的名稱,它不會與併發機制發生衝突。 – 2013-05-10 12:34:36
那麼這實際上是使用disqus模塊,並且有Thread實體,因此,問題不在於此)。在代碼中這個模塊嵌套在Disqus :: Thread中,我只是不想污染示例。但你一般都是對的。 – sandric 2013-05-10 12:38:23
我知道這個問題不是關於它的,這正是我在閱讀你的代碼時所想到的:) – 2013-05-10 12:43:52