Ruby 1.9.2 Странное предупреждение при запуске спецификаций огурца

StackOverflow https://stackoverflow.com/questions/3622394

Вопрос

Я только что обновил, чтобы попробовать рельсы 3, используя RVM с Ruby 1.9.2-P0.

Когда я бегу свои спецификации огурца, я получу следующие странные предупреждения

/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

Мой комплект содержит следующие драгоценные камни ...

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) 

Кто-нибудь знает, как избавиться от этих предупреждений? И куда они идут?

Это было полезно?

Решение

Это хорошее решение, доступное для этого, что я нашел в блоге Enrico Stahn:http://blog.enricostahn.com/warning-regexp-match-n-against-To-utf-8-strin.

Проблема в стойке и, очевидно, уже был исправлен В 1.3.0, но вы не сможете обновить до него.

Поэтому, пока вы не сможете перейти на стойку 1.3.0, создайте файл config/initializers/rack_hotfix.rb Со следующим контентом:

# 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

Это сработало для меня очарование, и тогда я дополнил его от ожидающей тестирования в моих файлов RSPEC в виде нежного напоминания о том, чтобы отбросить инициализатор после обновления стойки.

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

end

Другие советы

Видеть:

https://github.com/jnicklas/capybara/issues/87. а также https://github.com/jnicklas/capybara/issues/243.

для некоторого обсуждения вопроса. Резолюция, кажется, что как Capybara, так и стойки, необходимые для того, чтобы изменить некоторые вещи, чтобы прибыть на хорошее решение.

Если я правильно понимаю, стойку 1.3 и Capybara 1.0 должны решить проблему. На данный момент Rails 3.0.8 все еще требует стойки ~> 1.2.1, игнорируя стойку 1.3, даже если у вас его установлена. Так что я думаю, что рельсы (специфически ActionPack) должны понадобиться повысить свою зависимость, чтобы иметь чистое исправление.

Добавьте это в файл в features/support или положить его в 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

Это будет подавлять эти предупреждения, хотя я не уверен, что заставляет их в первую очередь. Я также получаю,

Есть драгоценный камень, называемый «escape_utils», который заботится об этой проблеме. Здесь связь к статье, объясняющей проблему.

Возможно, ваши сценарии кодируются в ASCII или другом формате из UTF-8?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top