我安装了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中。
答案 0 :(得分:132)
由于使用Rails应该自动处理,我假设您正在尝试将Active Support添加到非Rails脚本。
阅读“How to Load Core Extensions”。
Active Support的方法在Rails 3中分成了较小的组,因此我们最终不会使用简单的require '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>
答案 1 :(得分:26)
您可以通过已经提到的
精细地添加库require 'active_support/core_ext/some_class/some_file'
还有另一个级别你可以
require 'active_support/core_ext/some_class'
但是,目前,Time
,Date
和DateTime
无法使用此功能。
解决这个问题的方法是require 'active_support/time'
,它将为您提供Time
,Date
和DateTime
,这将解决OP要求而不需要所有内容。
My Rails patch,其中添加了active_support/core_ext/date
和date_time
,使其成为 Rails v4.0.0 ,因此现在您可以单独使用这些内容。 YAY!
答案 2 :(得分:-1)
对于我来说,以下链接有效:
https://bundler.io/blog/2019/01/04/an-update-on-the-bundler-2-release.html
$ cat Gemfile.lock | grep -A 1 "BUNDLED WITH"
BUNDLED WITH
1.17.3
$ gem install bundler -v '1.17.3'
答案 3 :(得分:-2)
这是否可以从控制台运行?这对我有用:
$ 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
答案 4 :(得分:-4)
你可以:
要求'active_support / core_ext'
或:
要求'active_support / all'