J'utilise une application Rails 3.0.0 sur Ruby 1.8.7-p174. Tout allait à merveille jusqu'à ce que j'essayé de faire quelques tests:Méthode non définie '>>' pour la classe 'Date' dans Rails 3 sur Ruby 1.8.7/1.9.2
/Users/avand/.rvm/gems/ruby-1.8.7-p174/gems/activesupport-3.0.0/lib/active_support/core_ext/date/calculations.rb:9: undefined method `>>' for class `Date' (NameError)
from /Users/avand/.rvm/gems/ruby-1.8.7-p174/gems/activesupport-3.0.0/lib/active_support/ruby/shim.rb:12:in `require'
from /Users/avand/.rvm/gems/ruby-1.8.7-p174/gems/activesupport-3.0.0/lib/active_support/ruby/shim.rb:12
from /Users/avand/.rvm/gems/ruby-1.8.7-p174/gems/actionpack-3.0.0/lib/abstract_controller.rb:6:in `require'
from /Users/avand/.rvm/gems/ruby-1.8.7-p174/gems/actionpack-3.0.0/lib/abstract_controller.rb:6
Je pris un coup d'oeil dans cette classe de calculs, en notant que undef
était appelé à :>>
. Mais Ruby 1.8.7 Date
s n'ont pas de méthode >>
. Je me suis dit que je l'emballerais avec une condition: if respond_to?(:>>)
. Les choses se sont rompues plus loin:
/Users/avand/.rvm/gems/ruby-1.9.2-rc2/gems/activesupport-3.0.0/lib/active_support/core_ext/date/calculations.rb:91:in `alias_method': undefined method `+' for class `Date' (NameError)
from /Users/avand/.rvm/gems/ruby-1.9.2-rc2/gems/activesupport-3.0.0/lib/active_support/core_ext/date/calculations.rb:91:in `<class:Date>'
from /Users/avand/.rvm/gems/ruby-1.9.2-rc2/gems/activesupport-3.0.0/lib/active_support/core_ext/date/calculations.rb:7:in `<top (required)>'
from /Users/avand/.rvm/gems/ruby-1.9.2-rc2/gems/activesupport-3.0.0/lib/active_support/ruby/shim.rb:12:in `require'
from /Users/avand/.rvm/gems/ruby-1.9.2-rc2/gems/activesupport-3.0.0/lib/active_support/ruby/shim.rb:12:in `<top (required)>'
from /Users/avand/.rvm/gems/ruby-1.9.2-rc2/gems/actionpack-3.0.0/lib/abstract_controller.rb:6:in `require'
La deuxième trace de pile est Ruby 1.9.2. Je reçois la même erreur avec Ruby 1.9.2 sans mon respond_to?
vérifier comme Ruby 1.8.7 avec elle.
J'ai commenté mes extensions Date
dans lib. Cela se produit uniquement dans l'environnement de test.
Pensées?