【问题标题】:Cucumber rake task fails, blames JSON parserCucumber rake 任务失败,归咎于 JSON 解析器
【发布时间】:2013-08-06 18:35:25
【问题描述】:

我有一个小型 Rails 4.0.0 / Ruby 2.0.0-p247 应用程序,我想为其编写一些测试。当我跑步时

rake cucumber:all

我收到以下错误:

/Users/me/.rvm/rubies/ruby-2.0.0-p247/bin/ruby -S bundle exec cucumber  --profile default
/Users/me/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/json/common.rb:155:in `parse': uninitialized constant JSON::Parser (NameError)
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/adapters/json_common.rb:16:in `load'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json/adapter.rb:19:in `load'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/multi_json-1.7.8/lib/multi_json.rb:118:in `load'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/gherkin-2.12.0/lib/gherkin/i18n.rb:14:in `<class:I18n>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/gherkin-2.12.0/lib/gherkin/i18n.rb:6:in `<module:Gherkin>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/gherkin-2.12.0/lib/gherkin/i18n.rb:5:in `<top (required)>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/gherkin-2.12.0/lib/gherkin/lexer/i18n_lexer.rb:2:in `require'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/gherkin-2.12.0/lib/gherkin/lexer/i18n_lexer.rb:2:in `<top (required)>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/gherkin-2.12.0/lib/gherkin.rb:1:in `require'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/gherkin-2.12.0/lib/gherkin.rb:1:in `<top (required)>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/cucumber-1.3.5/lib/cucumber/cli/main.rb:2:in `require'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/cucumber-1.3.5/lib/cucumber/cli/main.rb:2:in `<top (required)>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/cucumber-1.3.5/bin/cucumber:11:in `require'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/gems/cucumber-1.3.5/bin/cucumber:11:in `<top (required)>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/bin/cucumber:23:in `load'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/bin/cucumber:23:in `<main>'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
from /Users/me/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'

我运行了捆绑安装、捆绑更新、gem 清理等,但无济于事。这个相同的 Rails 应用程序在不同的机器(Mac OS X 10.8.4)上运行良好,但我的(Mac OS X 10.8.2)不工作。有什么想法吗?

【问题讨论】:

  • 你的 Gemfile 的内容是什么?

标签: ruby-on-rails cucumber rake ruby-on-rails-4


【解决方案1】:

我有完全相同的错误。原因就在这里:

https://github.com/intridea/multi_json/issues/131

由于他们修复了错误,您只需将 multi_json 更新到 1.7.9

--edited 请不要更改 Gemfile.lock,查看 cmets 了解详情

【讨论】:

  • 这样就可以了,但请不要手动更新您的 Gemfile.lock。而是运行$ bundle update multi_json。
  • 好点,因为当您使用bundle update 更新gem 时,bundler 将更新该gem 的所有依赖项,包括那些也是另一个gem 依赖项的依赖项。如果,multi_json-1.7.9 修复了问题,multi_json-1.7.10 又出现了这个问题怎么办?
  • 在这种情况下,您可以将 gem 'multi_json', '1.7.9' 添加到您的 Gemfile 并再次运行 bundle update multi_json。
【解决方案2】:

我相信问题的根源不是 JSON::Parser。 “ruby_noexec_wrapper”错误可能表明存在 RVM 问题。

试试

which cucumber

它应该是 bundled_cucumber 的别名

也尝试更新 RVM

rvm get stable

和/或制作新的宝石组

rvm gemset empty

【讨论】:

    猜你喜欢
    • 2016-04-17
    • 2014-12-09
    • 2018-11-23
    • 2018-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    相关资源
    最近更新 更多