Comment utiliser les extensions de base du support actif?

J’ai Active Support 3.0.3 installé et Rails 3.0.3 avec Ruby 1.8.7.

Quand j’essaie d’utiliser 1.week.ago je reçois

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

Les autres extensions de base semblent fonctionner. Je l’ai essayé sur l’ordinateur d’un ami (les mêmes spécifications d’installation et versions héritées sont sur lui) avec les mêmes résultats.

Ce qui donne?

Tout ceci est dans IRB.

Puisque l’utilisation de Rails devrait gérer cela automatiquement, je suppose que vous essayez d’append le support actif à un script non-Rails.

Lisez ” Comment charger les extensions de base “.

Les méthodes du support actif ont été divisées en groupes plus petits dans Rails 3, de sorte que nous ne require 'activesupport' pas par charger beaucoup de choses inutiles avec un simple require 'activesupport' . Maintenant, nous devons faire des choses comme require 'active_support/core_ext/object/blank'

Si vous ne vous souciez pas de la granularité, vous pouvez choisir de charger des blocs plus gros. Si vous voulez tout dans un grand gulp utiliser …

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

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

Vous pouvez append des bibliothèques de manière granulaire via le déjà mentionné

 require 'active_support/core_ext/some_class/some_file' 

Il y a aussi un autre niveau où vous pouvez

 require 'active_support/core_ext/some_class' 

Mais, pour le moment, ce n’est malheureusement pas disponible pour Time , Date et DateTime .

Un moyen de contourner ce require 'active_support/time' est de require 'active_support/time' qui vous donnera le Time , la Date et l’ DateTime qui résoudraient les demandes de l’OP sans avoir besoin de tout.


Le patch My Rails , qui ajoute active_support/core_ext/date et date_time , a été intégré à Rails v4.0.0 , vous pouvez donc désormais en avoir besoin individuellement. YAY!

Est-ce que cela fonctionne de la console? Cela fonctionne pour moi:

 $ 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 

Vous pouvez :
nécessite ‘active_support / core_ext’
ou :
nécessite ‘active_support / all’