代码之家  ›  专栏  ›  技术社区  ›  server info

ruby 1.9.2运行cucumber规范时出现奇怪的警告

  •  24
  • server info  · 技术社区  · 14 年前

    我刚刚更新了rails3,使用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) 
    

    5 回复  |  直到 12 年前
        1
  •  19
  •   Peter Nixey Axe    13 年前

    我在Enrico Stahn的博客上找到了一个很好的解决方案: http://blog.enricostahn.com/warning-regexp-match-n-against-to-utf-8-strin

    been fixed 但您可能还无法升级到它。

    因此,在升级到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文件,作为一个温和的提醒,一旦机架升级,就删除初始值设定项。

    describe ApplicationController do
      ...
      it "should not include the rack_hotfix.rb initializer after upgrading to rack 1.3.0"
    
    end
    
        2
  •  7
  •   Mike Furtak    13 年前

    请参见:

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

    关于这个问题的讨论。解决方案似乎是,水豚和Rack都需要改变一些事情,以得到一个好的解决方案。

        3
  •  6
  •   Bo Jeanes    14 年前

    将此添加到中的文件 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
    

    这将抑制这些警告,虽然我不知道是什么原因导致他们放在首位。我也在弄

        4
  •  6
  •   hjuskewycz    14 年前

    有一个名为“escape\u utils”的gem可以解决这个问题。这是你的名字 link 一篇解释问题的文章。

        5
  •  0
  •   Jorge Israel Peña    14 年前

    也许你的脚本是用ASCII编码的,或者是与UTF-8不同的格式?