2010-11-01 3 views
1

A l'origine ce bug a été posté ici: https://rails.lighthouseapp.com/projects/8994/tickets/5713-ruby-19-ku-incompatible-with-mem_cache_store Et maintenant, comme nous avons rencontré le même problème, je vais copier ici une question de ce problème, en espérant que quelqu'un a une réponse déjà: lorsque Ruby 1.9 est démarré en mode unicode (ku), mem_cache_store.rb ne parvient pas à analyser:Ruby 1.9 -Ku, mem_cache_store et erreur d'échappement multi-octets invalide

/usr/local/ruby19/bin/ruby -Ku /usr/local/ruby-1.9.2-p0/lib/ruby/gems/1.9.1/gems/ 
    activesupport-3.0.0/lib/active_support/cache/mem_cache_store.rb 
/usr/local/ruby-1.9.2-p0/lib/ruby/gems/1.9.1/gems/activesupport-3.0.0/lib/active_support/ 
    cache/mem_cache_store.rb:32: invalid multibyte escape: /[\x00-\x20%\x7F-\xFF]/ 

Notre cas est pratiquement identique: lorsque vous définissez config.action_controller.cache_store à: mem_cache_store, et essayez d'exécuter des tests, console ou serveur, vous le recevez en retour:

/Users/%username%/.rvm/gems/ruby-1.9.2-p0/gems/activesupport-3.0.1/lib/active_support/ 
    cache/mem_cache_store.rb:32: invalid multibyte escape: /[\x00-\x20%\x7F-\xFF]/ 

Toute idée comment cela peut être évité? ..

Répondre

2

Ruby 1.9 en mode unicode va tenter d'interpréter l'expression régulière comme unicode. Pour éviter cela, vous devez passer l'option d'expression régulière « n » pour « pas d'encodage »:

ESCAPE_KEY_CHARS = /[\x00-\x20%\x7F-\xFF]/n 

Maintenant, nous avons notre encodage 8 bits brut (la seule chose que Ruby 1.8 parle) comme prévu:

ruby-1.9.2-p136 :001 > ESCAPE_KEY_CHARS = /[\x00-\x20%\x7F-\xFF]/n.encoding 
=> # <Encoding:ASCII-8BIT> 

Espérons que les équipes Rails corrige cela, pour l'instant vous devez éditer le fichier.

Questions connexes