web-dev-qa-db-ja.com

Active Supportのコア拡張機能を使用するにはどうすればよいですか?

Active Support 3.0.3をインストールし、Rails 3.0.3 with Ruby 1.8.7。

1.week.agoを使用しようとすると、

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

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

何が得られますか?

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

93
griotspeak

Railsはこれを自動的に処理するはずなので、Rails以外のスクリプトにActive Supportを追加しようとしていると仮定します。

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

Active Supportのメソッドは、Rails 3の小さなグループに分割されたため、単純なrequire 'activesupport'で不要なものを大量にロードすることはありません。 require 'active_support/core_ext/object/blank'

粒度を気にしない場合は、より大きなチャンクをロードすることを選択できます。 1つの大きなグループですべてを使用する場合...

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> 
135
the Tin Man

既に述べた方法でライブラリを細かく追加できます

require 'active_support/core_ext/some_class/some_file'

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

require 'active_support/core_ext/some_class'

ただし、現時点では、残念ながらTimeDate、およびDateTimeには使用できません。

これを回避する方法はrequire 'active_support/time'は、OPを解決するTimeDate、およびDateTimeを提供します。


My Rails patch 、これはactive_support/core_ext/dateおよびdate_timeRails v4.0.0にしたため、これらを個別に要求できるようになりました。わーい!

26
mraaroncruz