Ruby on rails 如何使用主动支持核心扩展

Ruby on rails 如何使用主动支持核心扩展,ruby-on-rails,ruby,time,extension-methods,activesupport,Ruby On Rails,Ruby,Time,Extension Methods,Activesupport,我安装了Active Support 3.0.3,并使用Ruby 1.8.7安装了Rails 3.0.3 当我尝试使用1.week.ago时,我得到 NoMethodError: undefined method 'week' for 1:Fixnum from (irb):2 其他的核心扩展似乎可以工作。我在一个朋友的电脑上试用了它(他的电脑上有相同的安装规格和旧版本),效果也一样 有什么好处 所有这些都在IRB中。这在控制台中可以工作吗?这对我有用: $ sw_vers ProductNa

我安装了Active Support 3.0.3,并使用Ruby 1.8.7安装了Rails 3.0.3

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

NoMethodError: undefined method 'week' for 1:Fixnum
from (irb):2
其他的核心扩展似乎可以工作。我在一个朋友的电脑上试用了它(他的电脑上有相同的安装规格和旧版本),效果也一样

有什么好处


所有这些都在IRB中。

这在控制台中可以工作吗?这对我有用:

$ 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

因为使用Rails应该自动处理这个问题,所以我假设您正在尝试向非Rails脚本添加活动支持

读作“

在Rails 3中,Active Support的方法被分成了更小的组,因此我们不会用一个简单的
要求“activesupport”
加载很多不需要的东西。现在我们必须做一些事情,比如

require 'active_support/core_ext/object/blank'
如果不关心粒度,可以选择加载更大的块。如果你想一大口吞下所有东西,就用

对于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> 
您可以:
需要“主动支持/核心扩展”
或:

需要“主动\u支持/all”

您可以通过前面提到的

require 'active_support/core_ext/some_class/some_file'
还有另一个层次,你可以

require 'active_support/core_ext/some_class'
但是,不幸的是,目前在
时间
日期
日期时间
中没有此功能

解决这一问题的一种方法是
要求“主动支持/时间”
,这将为您提供
时间
日期
日期时间
,这将解决OP要求的问题,而无需一切



,它添加了
active\u support/core\u ext/date
date\u time
,使其成为Rails v4.0.0,因此现在您可以单独要求这些。耶

在我的案例中,以下链接起作用:


你不能说你的代码是在Rails应用程序中运行,还是在Ruby应用程序中运行,你想在其中使用一些Rails扩展。重复。我必须先要求rubygems和active_record,但这个修复在那之后在irb中起了作用。我所做的只是示例中的内容。我还将添加我在1.8.7中运行它时所做的操作。如果您一直需要此操作,比如说您正在玩一些代码或其他东西,您可以添加或修改.irbrc文件以要求您一直使用的所有LIB。它将在启动时自动加载它们。也就是说,我一直在使用awesome_print、hirb和一些自定义方法,所以我只是把它们放在那里,不必为1.1小时前或ap{:a=>3,:b=>nick}之类的事情三思而后行。它包括对IRB的各种好的调整。如果您需要临时禁用它们,请调用
irb-f
,它将不会加载它们。非常令人印象深刻。
$ cat Gemfile.lock | grep -A 1 "BUNDLED WITH"
BUNDLED WITH
   1.17.3

$ gem install bundler -v '1.17.3'