我如何使用Active Support核心扩展?

我已经安装了Active Support 3.0.3,Rails 3.0.3和Ruby 1.8.7。

当我尝试使用1.week.ago我得到

 NoMethodError: undefined method 'week' for 1:Fixnum from (irb):2 

其他核心扩展似乎工作。 我在朋友的电脑上试了一下(相同的安装规格和旧版本),结果相同。

是什么赋予了?

所有这些都在IRB中。

由于使用Rails应该自动处理这个问题,我假设你正在尝试将Active Support添加到非Rails脚本。

阅读“ 如何加载核心扩展 ”。

Active Support的方法在Rails 3中被分成了更小的组,所以我们不会用简单require 'activesupport'加载很多不需要的东西。 现在我们必须做一些事情,比如require 'active_support/core_ext/object/blank'

如果你不关心粒度,你可以select加载更大的块。 如果你想在一个大的使用一切的东西…

对于1.9.2:

 rvm 1.9.2 irb -f irb(main):001:0> require 'active_support/all' => true irb(main):002:0> 1.week.ago => 2010-11-14 17:56:16 -0700 irb(main):003:0> 

对于1.8.7:

 rvm 1.8.7 irb -f irb(main):001:0> require 'rubygems' => true irb(main):002:0> require 'active_support/all' => true irb(main):003:0> 1.week.ago => Sun Nov 14 17:54:19 -0700 2010 irb(main):004:0> 

您可以通过已经提到的细粒度添加库

 require 'active_support/core_ext/some_class/some_file' 

还有另外一个层面,你可以

 require 'active_support/core_ext/some_class' 

但是,目前,这是不幸的TimeDateDateTime Time不可用。

解决这个问题的方法是require 'active_support/time' ,它会给你TimeDateDateTime Time ,这将解决OP所要求的,而不需要一切。


我的Rails补丁 ,它增加了active_support/core_ext/datedate_time ,使它成为Rails v4.0.0 ,所以现在你可以单独要求这些。 好极了!

这是从控制台工作吗? 这对我有用:

 $ sw_vers ProductName: Mac OS X ProductVersion: 10.6.5 BuildVersion: 10H574 $ rails c Loading development environment (Rails 3.0.3) >> 1.week.ago => Sun, 14 Nov 2010 16:57:18 UTC +00:00 

您可以 :
要求'active_support / core_ext'
要么 :
要求“active_support / all”