ruby - 来自 IntelliJ 的 Runnin rspec

标签 ruby intellij-idea rspec

我通常从 IntelliJ 内部运行我的规范。我已经删除了我的 gem 并使用 bundle install 重新安装它们(由于另一个错误),现在我在尝试运行规范时遇到错误。

我注意到从它使用的 intelliJ 运行规范:

    from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'

从 shell 运行时情况并非如此(我在 kernel_require 脚本中放置了一个 print 检查它)。

我还看到来自 intelliJ 的 ruby​​ 版本是:

"ruby 2.2.4: 230"

从外壳:

ruby -e 'print "ruby #{ RUBY_VERSION }p#{ RUBY_PATCHLEVEL }"'
ruby 2.2.6p396%    

错误:

    /home/user/.rvm/rubies/ruby-2.2.4/bin/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /home/user/.rvm/gems/ruby-2.2.4/bin/rspec /home/user/workspace/auto-test/spec/pools/pool_cg_view_spec.rb --require teamcity/spec/runner/formatter/teamcity/formatter --format Spec::Runner::Formatter::TeamcityFormatter
    Testing started at 10:21 ...
    /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require': incompatible library version - /home/user/.rvm/gems/ruby-2.2.4/gems/nokogiri-1.6.8/lib/nokogiri/nokogiri.so (LoadError)
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/nokogiri-1.6.8/lib/nokogiri.rb:32:in `rescue in <top (required)>'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/nokogiri-1.6.8/lib/nokogiri.rb:28:in `<top (required)>'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/capybara-2.7.1/lib/capybara.rb:3:in `<top (required)>'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/capybara-2.7.1/lib/capybara/dsl.rb:2:in `<top (required)>'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/capybara-2.7.1/lib/capybara/rspec.rb:2:in `<top (required)>'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `require'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:128:in `rescue in require'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:39:in `require'
        from /home/user/workspace/auto-test/spec/support/capybara.rb:3:in `<top (required)>'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/workspace/auto-test/spec/spec_helper.rb:6:in `block in <top (required)>'
        from /home/user/workspace/auto-test/spec/spec_helper.rb:6:in `each'
        from /home/user/workspace/auto-test/spec/spec_helper.rb:6:in `<top (required)>'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/rubies/ruby-2.2.4/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1295:in `block in requires='
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1295:in `each'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/configuration.rb:1295:in `requires='
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:109:in `block in process_options_into'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:108:in `each'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:108:in `process_options_into'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/configuration_options.rb:21:in `configure'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:101:in `setup'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:88:in `run'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:73:in `run'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/lib/rspec/core/runner.rb:41:in `invoke'
        from /home/user/.rvm/gems/ruby-2.2.4/gems/rspec-core-3.4.1/exe/rspec:4:in `<top (required)>'
        from /home/user/.rvm/gems/ruby-2.2.4/bin/rspec:23:in `load'
        from /home/user/.rvm/gems/ruby-2.2.4/bin/rspec:23:in `<top (required)>'
        from -e:1:in `load'
        from -e:1:in `<main>'

    Process finished with exit code 1

如果我尝试从 shell 运行规范,它会工作,没有错误,所以我猜问题与运行的配置有关,但不确定是什么。

到目前为止有效的运行配置:

enter image description here

我已经尝试删除 nokogiri gem 并重新安装它,但还是一样。

有什么想法吗?

项目结构: enter image description here

最佳答案

您指出您在使用控制台时使用的是 ruby​​ 2.2.6。 IntelliJ 提示缺少 nokogiri gem。

我可以想象,您的最后一个 bundle install 可能没有使用 ruby​​ 2.2.4(IntelliJ 使用),而是使用 ruby​​ 2.2.6 来安装 gems。

我建议采取以下步骤来缩小范围:

  • 验证并确保您在 shell 上使用 ruby​​ 2.2.4(这非常重要!)
  • 运行 bundle install 以确保为 ruby​​ 2.2.4 安装项目的所有 gem
  • 在 shell 中运行你的规范

如果成功,则尝试使用 IntelliJ 运行规范。 如果上述步骤没有问题,这应该有效。

个人说明(不知道是不是已经这样了): 在我的项目中,我的项目根目录中始终有一个 .ruby-version 文件,以确保当前项目的 ruby​​ 版本正确。您甚至可以更进一步,添加一个 .ruby-gemset 文件。

更多信息可以在 rvm docs 中找到

关于ruby - 来自 IntelliJ 的 Runnin rspec,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43886590/

相关文章:

ruby - Nokogiri::XML.parse 是否应该为换行符创建单独的文本节点?

ruby-on-rails - 推送到 Heroku 时应用程序的位置

ruby - Rails rspec - 如何检查具有 ", if: :direct"子句的验证模型

ruby-on-rails - Ruby on Rails 的 WordPress 替代品是什么?

ruby-on-rails - 不对所有记录重新索引时,Searchkick不同的重新索引结果

java - IntelliJ 与 Eclipse 相比有哪些优势?

java - 问题 JDK 在 Intellij 中创建 scala 项目

java - 更改 IntelliJ 代码构造符号

ruby-on-rails - 使用 rSpec 测试 delayed_job 链的最佳方法是什么?

ruby-on-rails - Devise 和 Rspec - 为未经身份验证的用户测试重定向时 Controller 测试出错