我一直试图在irb中测试一些东西而且它不能识别像
这样的命令2.weeks.ago
和
10.hours.ago
我得到的错误如下:
1.9.3p258 :002 > 2.weeks.ago
NoMethodError: undefined method `weeks' for 2:Fixnum
from (irb):2
from /Users/Avneesh/.rvm/rubies/ruby-1.9.3-head/bin/irb:16:in `<main>'
供参考...... Ruby版本:1.9.3p258 操作系统:Mac OS X 10.8
有关为何发生这种情况的任何想法?我很确定我不需要/包含任何模块/库。任何帮助将不胜感激。
感谢。
答案 0 :(得分:7)
这些方法在activesupport gem中定义。您需要包含active_support / all
有两种方法:
➜ ~ irb -ractive_support/all
1.9.3-p125 :001 > 2.weeks.ago
=> 2012-07-22 14:06:10 +0530
1.9.3-p125 :002 > exit
➜ ~ irb
1.9.3-p125 :001 > require 'active_support/all'
=> true
1.9.3-p125 :002 > 2.weeks.ago
=> 2012-07-22 14:06:22 +0530
1.9.3-p125 :003 >
编辑:正如Jörg在评论中指出的那样,您可以要求active_support/core_ext/integer/time
包含时间特定功能,包括此功能。