2010-09-01 21 views
24

Acabo de actualizar para probar los rieles 3, usando rvm con ruby ​​1.9.2-p0.ruby ​​1.9.2 advertencia extraña al ejecutar las especificaciones de pepino

Cuando ejecuto mi especificaciones de pepino en cuando me siento siguientes advertencias extrañas

/home/ubuntu/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.1/lib/rack/utils.rb:16: warning: regexp match /.../n against to UTF-8 string 

/home/ubuntu/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.1/lib/rack/utils.rb:16: warning: regexp match /.../n against to UTF-8 string 

/home/ubuntu/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.1/lib/rack/utils.rb:16: warning: regexp match /.../n against to UTF-8 string 

Mi paquete contiene los siguientes gemas ...

Using rake (0.8.7) 
Using abstract (1.0.0) 
Using activesupport (3.0.0) 
Using builder (2.1.2) 
Using i18n (0.4.1) 
Using activemodel (3.0.0) 
Using erubis (2.6.6) 
Using rack (1.2.1) 
Using rack-mount (0.6.13) 
Using rack-test (0.5.4) 
Using tzinfo (0.3.23) 
Using actionpack (3.0.0) 
Using mime-types (1.16) 
Using polyglot (0.3.1) 
Using treetop (1.4.8) 
Using mail (2.2.5) 
Using actionmailer (3.0.0) 
Using arel (1.0.1) 
Using activerecord (3.0.0) 
Using activeresource (3.0.0) 
Using bundler (1.0.0) 
Using culerity (0.2.12) 
Using nokogiri (1.4.3.1) 
Using ffi (0.6.3) 
Using json_pure (1.4.6) 
Using rubyzip (0.9.4) 
Using selenium-webdriver (0.0.28) 
Using capybara (0.3.9) 
Using configuration (1.1.0) 
Using diff-lcs (1.1.2) 
Using trollop (1.16.2) 
Using gherkin (2.1.5) 
Using term-ansicolor (1.0.5) 
Using cucumber (0.8.5) 
Using cucumber-rails (0.3.2) 
Using database_cleaner (0.5.2) 
Using launchy (0.3.7) 
Using mysql2 (0.2.3) 
Using rspec-core (2.0.0.beta.20) 
Using rspec-expectations (2.0.0.beta.20) 
Using rspec-mocks (2.0.0.beta.20) 
Using rspec (2.0.0.beta.20) 
Using yard (0.6.0) 
Using pickle (0.4.2) 
Using thor (0.14.0) 
Using railties (3.0.0) 
Using rails (3.0.0) 
Using rspec-rails (2.0.0.beta.20) 
Using spork (0.8.4) 
Using webrat (0.7.1) 

¿alguien sabe cómo deshacerse de estas advertencias? ¿Y de dónde vienen?

+0

Estoy teniendo exactamente lo mismo. ¡Me encantaría descubrir la causa! –

+1

Hola, ¿te importaría salir de la última respuesta a esto: http://stackoverflow.com/questions/3622394/ruby-1-9-2-strange-warning-when-running-cucumber-specs/7189698# 7189698 Creo que soluciona su problema y le agradecería que lo marcara como correcto. Ty –

Respuesta

19

No es una buena solución disponible para este que he encontrado en un blog de Enrico Stahn: http://blog.enricostahn.com/warning-regexp-match-n-against-to-utf-8-strin

El problema está en rack y tiene al parecer ya been fixed en 1.3.0 pero puede no ser capaz de actualizar a él todavía.

Así que hasta se puede actualizar a 1.3.0 rack, crear el archivo config/initializers/rack_hotfix.rb con el siguiente contenido:

# TODO: Can be removed after updating to rack 1.3.0 
module Rack 
    module Utils 
    def escape(s) 
     CGI.escape(s.to_s) 
    end 
    def unescape(s) 
     CGI.unescape(s) 
    end 
    end 
end 

Esto funcionaba a las mil maravillas para mí y luego complementó con una prueba a la espera de mi RSpec archivos como un recordatorio suave para soltar el inicializador una vez que se ha actualizado Rack.

describe ApplicationController do 
    ... 
    it "should not include the rack_hotfix.rb initializer after upgrading to rack 1.3.0" 

end 
+1

Gracias! Esto funciono muy bien para mi. – shakerlxxv

+2

Al usar Rails 3.0.10, no puede actualizar a Rack 1.3+, ¡así que este es el truco para usar! Personalmente no me gusta tener pruebas pendientes, si es como yo, puede usar estos ejemplos: 'it" debe incluir el inicializador rack_hotfix.rb antes del rack 1.3.0 "do if Rack.release.to_f <= 1.2 rack :: Utilidades :: hotfixed.should be_true final final que "no debe incluir el inicializador rack_hotfix.rb después bastidor 1.3.0" hacer si Rack.release.to_f> = 1.3 esperar {rack: : Utils.hotfixed} .to raise_error end final' Simplemente agregue esta línea a la revisión: 'def self.hotfixed true end' – rchampourlier

0

¿Tal vez sus scripts están codificados en ASCII o en un formato diferente de UTF-8?

+0

¿Qué significa esto? ¿Puedes darnos algunos detalles? ¿Es mi editor el que necesita tratar los archivos como UTF-8? Porque la advertencia viene de Rack por lo que puedo adivinar ... –

6

añadir esto a un archivo en features/support o ponerlo en el archivo env.rb:

# Stop endless errors like 
# ~/.rvm/gems/[email protected]/gems/rack-1.2.1/lib/rack/utils.rb:16: 
# warning: regexp match /.../n against to UTF-8 string 
$VERBOSE = nil 

Esto suprimirá esas advertencias, aunque no estoy seguro de lo que está causando en el primer lugar. Los estoy recibiendo, también

6

Hay una gema llamada "escape_utils" que se encarga de este problema. Aquí está el link a un artículo que explica el problema.

+4

Odio agregar una gema y un módulo solo para hackear lo que podría ser una advertencia real. ¿No deberíamos sentarnos hasta un parche? –

+0

Tenga cuidado, probé la solución con escape_utils y hace que las pruebas de pepino ejecutadas a través de spork se descompongan en su totalidad. El error que recibo en este caso es 'en \ 'carga': formato de archivo de Mariscal incompatible (no se puede leer) (TypeError) \t se requiere versión de formato 4.8; 0.0 dado' –

+0

Esta no es la mejor solución ya que solo causa problemas en otras áreas. – efoo

7

Ver:

https://github.com/jnicklas/capybara/issues/87 y https://github.com/jnicklas/capybara/issues/243

por alguna discusión del tema. La resolución parece ser que tanto Capybara como Rack necesitaron cambiar algunas cosas para llegar a una buena solución.

Si tengo entendido correctamente, Rack 1.3 y Capybara 1.0 deberían resolver el problema. Por el momento, Rails 3.0.8 aún requiere Rack ~> 1.2.1, ignorando Rack 1.3 incluso si lo tienes instalado. Así que creo que Rails (específicamente actionpack) necesitará actualizar su dependencia para tener una solución limpia.

Cuestiones relacionadas