我需要改變DateTime對象。我發現的資源表明,這是我需要做的,但我不確定如何處理此代碼。我在哪裏放?謝謝閱讀。如何使用這個mixin來改變DateTime對象?
module DateTimePatch
def getlocal
"works!"
end
end
DateTime.send(:include, DateTimePatch)
編輯: 所以這是我
/lib/date_time.rb
class DateTime
def getlocal
"it works"
end
end
控制檯
ruby-1.9.2-p0 > Time.now.getlocal
=> 2010-11-09 23:40:36 +1000
ruby-1.9.2-p0 > DateTime.now
=> Tue, 09 Nov 2010 23:40:57 +1000
ruby-1.9.2-p0 > DateTime.now.getlocal
NoMethodError: undefined method `getlocal' for Tue, 09 Nov 2010 23:41:02 +1000:DateTime
EDIT2:
確定,所以現在我這樣做的:
ruby-1.9.2-p0 > require './lib/date_time.rb'
=> true
ruby-1.9.2-p0 > DateTime.now.getlocal
NoMethodError: undefined method `now' for DateTime:Class
from (irb):2
from /Users/benhartney/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'
ruby-1.9.2-p0 > DateTime.now
NoMethodError: undefined method `now' for DateTime:Class
from (irb):3
from /Users/benhartney/.rvm/rubies/ruby-1.9.2-p0/bin/irb:17:in `<main>'
我嘗試添加一個臨時now
方法的混入,看是否錯誤仍然發生,它做到了。 DateTime.now在加載mixin之前工作正常,不知道爲什麼會發生這種情況?
你指的是什麼資源? – Zabba 2010-11-09 07:08:20
另外,請嘗試'send!'方法而不是'send'。任何錯誤? – Zabba 2010-11-09 07:17:58
你正在執行'/ lib/date_time.rb'嗎? – 2010-11-09 15:11:27