24

Ruby 1.9.2-p0でrvmを使用して、Rails 3を試すように更新しました。

きゅうりの仕様を実行すると、次の奇妙な警告が表示されます

/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) 

これらの警告を取り除く方法を知っている人はいますか? そして、彼らはどこから来たのですか?

4

5 に答える 5

19

Enrico Stahn によるブログ投稿で見つけた、これに対する適切な解決策があります。

この問題は Rack にあり、明らかに 1.3.0 で既に修正されていますが、まだアップグレードできない可能性があります。

したがって、Rack 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 ファイルの保留中のテストを追加して、Rack がアップグレードされたらイニシャライザをドロップするように穏やかに思い出させました。

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

end
于 2011-08-25T11:38:56.540 に答える
7

見る:

https://github.com/jnicklas/capybara/issues/87およびhttps://github.com/jnicklas/capybara/issues/243

問題のいくつかの議論のために。解決策は、カピバラとラックの両方が、良い解決策に到達するためにいくつかのことを変更する必要があったということのようです。

私が正しく理解していれば、Rack1.3とCapybara1.0で問題が解決するはずです。ただし、現時点では、Rails 3.0.8にはRack〜> 1.2.1が必要であり、Rack1.3がインストールされている場合でも無視されます。したがって、Rails(特にactionpack)は、クリーンな修正を行うために依存関係をアップグレードする必要があると思います。

于 2011-06-12T16:09:08.230 に答える
6

この問題を処理する「escape_utils」という gem があります。問題を説明する記事へのリンクを次に示します。

于 2010-10-05T14:14:29.153 に答える
6

これをファイルに追加する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

これにより、これらの警告が抑制されますが、そもそも何が原因であるかはわかりません。私もそれらを取得しています

于 2010-09-11T21:45:16.900 に答える
0

スクリプトが ASCII でエンコードされているか、UTF-8 とは異なる形式でエンコードされている可能性があります。

于 2010-09-01T21:52:26.590 に答える