Come posso utilizzare le estensioni core di Active Support?

Ho installato Active Support 3.0.3 e Rails 3.0.3 con Ruby 1.8.7.

Quando cerco di utilizzare 1.week.ago ottengo

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

Le altre estensioni principali sembrano funzionare. L’ho provato sul computer di un amico (le stesse specifiche di installazione e versioni precedenti sono sul suo) con gli stessi risultati.

Cosa dà?

Tutto questo è in IRB.

Dato che l’uso di Rails dovrebbe gestirlo automaticamente, assumerò che tu stia cercando di aggiungere Active Support a uno script non-Rails.

Leggi ” Come caricare le estensioni del core “.

I metodi di Active Support sono stati suddivisi in gruppi più piccoli in Rails 3, quindi non finiremo per caricare un sacco di cose non necessarie con un semplice require 'activesupport' . Ora dobbiamo fare cose come require 'active_support/core_ext/object/blank'

Se non ti interessa la granularità, puoi scegliere di caricare blocchi più grandi. Se vuoi che tutto in un solo grande sorso usi …

Per 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> 

Per 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> 

Puoi aggiungere le librerie in modo granulare tramite il già citato

 require 'active_support/core_ext/some_class/some_file' 

C’è anche un altro livello dove puoi

 require 'active_support/core_ext/some_class' 

Ma, al momento, questo purtroppo non è disponibile per Time , Date e Date .

Un modo per aggirare questo è require 'active_support/time' che ti darà Time , Date e DateTime che risolverebbe l’OP chiedendo senza richiedere tutto.


La patch My Rails , che aggiunge active_support/core_ext/date e date_time , è stata trasformata in Rails v4.0.0 , quindi ora puoi richiederli individualmente. SÌÌ!

Funziona dalla console? Questo funziona per me:

 $ 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 

Puoi :
richiede ‘active_support / core_ext’
o :
richiede ‘active_support / all’