web-dev-qa-db-fra.com

Comment utiliser les extensions principales d'Active Support?

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 les versions héritées sont sur le sien) avec les mêmes résultats.

Ce qui donne?

Tout cela se trouve à la CISR.

88
griotspeak

Étant donné que l'utilisation de Rails devrait gérer cela automatiquement, je vais supposer que vous essayez d'ajouter Active Support à un script non-Rails.

Lisez " Comment charger les extensions principales ". 

Les méthodes d'Active Support ayant été divisées en groupes plus petits dans Rails 3, nous ne finissons donc pas par charger beaucoup d'éléments 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 de plus gros morceaux. Si vous voulez tout en un seul coup, utilisez ...

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

Vous pouvez ajouter des bibliothèques de manière granulaire via le

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, ceci n’est malheureusement pas disponible pour Time, Date et DateTime

Un moyen de contourner cela est de require 'active_support/time' qui vous donnera Time, Date et DateTime qui résoudrait le problème demandé par le PO sans tout exiger.


Le correctif My Rails , qui ajoute active_support/core_ext/date et date_time, a été intégré à Rails v4.0.0. Vous pouvez désormais en demander un individuellement. YAY!

25
mraaroncruz