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.
É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>
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!