Cucumber声称它的支持文件坏了吗?

Yam*_*nue 9 ruby-on-rails cucumber

在铁轨上使用黄瓜作为红宝石,我运行了一个因愚蠢的原因失败的测试(我做了一个错字).我解决了这个问题,突然之间,Cucumber将不再运行了.我没有更改它引用的任何文件:

/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_dsl.js:3: 
syntax error, unexpected '{', expecting keyword_then or ';' or '\n'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_dsl.js:6: syntax error, unexpected keyword_else, expecting '}'
    else {
        ^
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_dsl.js:7: syntax error, unexpected ';', expecting tASSOC
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-

1.1.8/lib/cucumber/js_support/js_dsl.js:13: syntax error, unexpected ',', expecting $end (SyntaxError)
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `block in load'
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:225:in `load_dependency'
/usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.0/lib/active_support/dependencies.rb:234:in `load'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/js_support/js_language.rb:114:in `initialize'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:74:in `new'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:74:in `load_programming_language'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:185:in `programming_language_for'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:169:in `load_file'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:83:in `block in load_files!'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:82:in `each'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime/support_code.rb:82:in `load_files!'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime.rb:175:in `load_step_definitions'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/runtime.rb:40:in `run!'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/cli/main.rb:43:in `execute!'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/lib/cucumber/cli/main.rb:20:in `execute'
/usr/local/lib/ruby/gems/1.9.1/gems/cucumber-1.1.8/bin/cucumber:14:in `<top (required)>'
/usr/local/bin/cucumber:19:in `load'
/usr/local/bin/cucumber:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)

显然有些事情变得非常糟糕.我的问题很简单,我该如何解决这个问题呢?这是一个已知的错误?可以/我应该重新安装黄瓜吗?整个堆栈?我对Rails和Cucumber的经验很少,显而易见的解决方案让我失望(它抱怨的文件很好,实际上相当可读,没什么奇怪的;再次运行它显示它不仅仅是一个侥幸;破坏了这个特性我修改了什么都没有).

js_dsl的第3-7行是:

 if (func == null) {
      jsLanguage.execute_step_definition(regexp);
    }
    else {
      jsLanguage.add_step_definition(regexp, func);
    }
  },
Run Code Online (Sandbox Code Playgroud)

所以我检查了步骤定义文件,看起来也很好.通常,步骤定义错误会给出错误消息,而不是像这样的完全失败.

Yam*_*nue 3

我什至不...

我的同学发现了这里的问题和解决方案在这里

显然,名为“theRubyRacer”的东西(我被告知要使用的图像的一部分)现在“已过时”,这显然意味着“尽管十分钟前工作正常,但还是打破了黄瓜”。不知何故,涉及“simplecov”,这意味着我现在不知道如何获得作业所需的覆盖率数字,但我不再关心,因为我感到沮丧和困惑,而且它现在可以工作了。这只是今天开始的,所以我在想某个地方联系了某个地方的服务器,告诉它宝石已经过时,因此拒绝使用它?

如果有人有更多信息,请告诉我。


由于显然这些链接被隔离,问题是:

所以我已经确定了问题所在:

覆盖文件夹。

如果我不将 require 'simplecov' SimpleCov.start 'rails' 放在 env.rb 的顶部,我可以运行并通过我的 Cucumber 和 rspec 测试,而不会出现任何问题。

我的所有步骤都是绿色的,但是如果我添加这两行,就会出现上面的错误。如果我删除 de /coverage 文件夹,我可以运行一次测试,但下次会再次重现错误。

有什么帮助吗?

然后提到的解决方案是

从 Gemfile 中注释掉这一行并再次运行捆绑安装:

# gem 'therubyracer'

现在这个已经过时了。看:

http://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar#therubyracer

其中说:

如果您以前使用过 therubyracer 或 therubyracer-heroku,则不再需要并强烈建议不要使用这些 gem,因为这些 gem 使用大量内存。