102

Active Support 3.0.3がインストールされており、Rails3.0.3とRuby1.8.7がインストールされています。

使おうとする1.week.ago

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

他のコア拡張機能は機能しているようです。私は友人のコンピューターでそれを試しました(同じインストール仕様とレガシーバージョンが彼にあります)、同じ結果が得られました。

何が得られますか?

これはすべてIRBにあります。

4

5 に答える 5

145

Rails を使用するとこれが自動的に処理されるため、Rails 以外のスクリプトに Active Support を追加しようとしていると仮定します。

「コア拡張機能のロード方法」をお読みください。

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> 
于 2010-11-21T18:54:17.883 に答える
29

前述の方法でライブラリを細かく追加できます

require 'active_support/core_ext/some_class/some_file'

あなたができる別のレベルアップもあります

require 'active_support/core_ext/some_class'

しかし、現時点では、残念ながらTime、 、Dateおよびでは利用できませんDateTime

これを回避する方法は、require 'active_support/time'どちらがあなたTimeDateを提供DateTimeし、OPがすべてを必要とせずに求めていたものを解決することです。


active_support/core_ext/dateとを追加する私の Rails パッチdate_timeは、それをRails v4.0.0にしたので、これらを個別に要求できるようになりました。わーい!

于 2012-07-14T12:47:13.000 に答える
-4

次のことができます:
require 'active_support/core_ext'
または:
require 'active_support/all'

于 2011-10-21T02:55:00.627 に答える
-4

これはコンソールから機能しますか? これは私のために働いています:

$ 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
于 2010-11-21T16:57:58.747 に答える