Active Supportコア拡張の使用方法


96

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にあります。


あなたは、いくつかのRailsの拡張機能を使用したいというあなたのコードはRailsアプリケーション内で実行されているかどうかと言う、またはRubyアプリケーションではありません。
ティン・マン

回答:


136

Railsを使用するとこれが自動的に処理されるので、Rails以外のスクリプトにアクティブサポートを追加しようとしていると想定します。

コア拡張をロードする方法」を読みください。

Rails 3ではActive Supportのメソッドが小さなグループに分割されたので、単純なで不要なものをたくさんロードすることはありません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> 

最初にrubygemsとactive_recordを要求する必要がありますが、この修正DIDはその後irbで機能します。
griotspeak 2010年

私がしたことは、例にあるものだけでした。1.8.7で実行するために行ったことも追加します。
Tin Man、

1
常にこれが必要な場合-なんらかのコードなどで遊んでいるとしましょう。.irbrcファイルを追加または変更して、常に使用するすべてのライブラリを要求できます。起動時に自動的に読み込まれます。IE awesome_print、hirb、およびいくつかのカスタムメソッドを常に使用しているため、それらをそこに配置するだけで、1.hour.agoやap {:a => 3、:b => "のようなことを何度も考える必要はありません。 nick "}が機能します。
konung 2010年

1
チェックしてくださいirbtools。IRBに対するあらゆる種類のすばらしい調整が含まれています。そして、それらを一時的に無効にする必要がある場合は、を呼び出してirb -fロードしません。
Tin Man、

新しいホットネスはRubyインタラクティブセッションのPryです。非常に印象的。
Tin Man

28

すでに述べたようにライブラリを細かく追加できます

require 'active_support/core_ext/some_class/some_file'

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

require 'active_support/core_ext/some_class'

ただし、現時点では、これはTimeDateおよびで使用できませんDateTime

これを回避する方法は、することですrequire 'active_support/time'あなたを与えるであろうTimeDateDateTimeそのすべてのものを必要とせずにOPが求めていた解決するだろう。


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



-3

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

$ 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

次のことができます:
'active_support / core_ext'を 要求する
か、または
'active_support / all'を要求します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.