我如何使用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'
但是,目前,这是不幸的Time
, Date
和DateTime
Time
不可用。
解决这个问题的方法是require 'active_support/time'
,它会给你Time
, Date
和DateTime
Time
,这将解决OP所要求的,而不需要一切。
我的Rails补丁 ,它增加了active_support/core_ext/date
和date_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”