Ruby 1.9.2 étrange avertissement lors de l'exécution des spécifications de concombre
-
26-09-2019 - |
Question
Je viens mis à jour pour essayer rails 3, en utilisant RVM rubis 1.9.2-p0.
Quand je lance mes specs de concombre puis je reçois des avertissements suivants étranges
/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
Mon paquet contient des pierres précieuses ... suite
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)
Quelqu'un sait comment se débarrasser de ces mises en garde? Et où ils viennent?
La solution
Il y a une bonne solution disponible à ce que j'ai trouvé sur un blog par Enrico Stahn: http://blog.enricostahn.com/warning -regexp match-n-contre-to-utf-8-strin
Le problème est en rack et a apparemment déjà été fixé 1.3.0 mais vous ne pouvez pas être en mesure de mettre à niveau encore.
jusqu'à ce que vous pouvez mettre à niveau vers rack 1.3.0, créez le fichier config/initializers/rack_hotfix.rb
avec le contenu suivant:
# 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
Cela a un charme pour moi et je complété avec un test dans l'attente de mes fichiers sur de RSpec comme un petit rappel pour laisser tomber le initialiseur une fois a été mis à jour en rack.
describe ApplicationController do
...
it "should not include the rack_hotfix.rb initializer after upgrading to rack 1.3.0"
end
Autres conseils
Voir:
https://github.com/jnicklas/capybara/issues/87 https://github.com/jnicklas/capybara/issues/243
pour une discussion sur la question. La résolution semble être que les deux Capybara et rack nécessaire pour changer certaines choses pour arriver à une bonne solution.
Si je comprends bien, Rack 1.3 et 1.0 Capybara devrait résoudre le problème. À l'heure actuelle cependant, Rails 3.0.8 nécessite encore rack ~> 1.2.1, ignorant rack 1.3, même si vous l'avez installé. Je pense donc que Rails (en particulier actionpack) devra améliorer sa dépendance d'avoir une solution propre.
Ajoutez ceci à un fichier dans features/support
ou le mettre dans le fichier env.rb
:
# Stop endless errors like
# ~/.rvm/gems/ruby-1.9.2-p0@global/gems/rack-1.2.1/lib/rack/utils.rb:16:
# warning: regexp match /.../n against to UTF-8 string
$VERBOSE = nil
Cela supprime ces avertissements, mais je ne sais pas ce qui les provoque en premier lieu. Je les reçois, aussi
Peut-être que vos scripts sont codés en ASCII ou un format différent UTF-8?