在 Jenkins 上运行时找不到 gem rspec-core (>= 0.a) (Gem::GemNotFoundException)

Posted

技术标签:

【中文标题】在 Jenkins 上运行时找不到 gem rspec-core (>= 0.a) (Gem::GemNotFoundException)【英文标题】:can't find gem rspec-core (>= 0.a) (Gem::GemNotFoundException) when running on Jenkins 【发布时间】:2018-01-22 04:59:12 【问题描述】:

我正在尝试在 Jenkinsfile 中运行 ruby​​ 规范测试。 但是我在执行这段代码时遇到了问题:

sh 'rspec spec/unit/test_spec.rb'

这是错误:

/home/user/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems.rb:271:in 'find_spec_for_exe': 找不到 gem rake (>= 0.a) (Gem::GemNotFoundException) 来自 /home/user/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems.rb:299:in 'activate_bin_path' 来自 /home/user/.rvm/gems/ruby-2.4.0@global/bin/rake:23:in '' 来自 /home/user/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in eval' 来自/home/user/.rvm/gems/ruby-2.4.0/bin/ruby_executable_hooks:15:in ''

我在 EC2 实例上运行 Jenkins。 gem rspec-core 肯定已安装,因为我在运行规范测试之前进行了捆绑安装。我还运行了与实例本身而不是 Jenkins 完全相同的测试,并且它可以工作。 当我在 Jenkins 上运行 gem which rspec 时,它给了我这个错误:

错误:找不到 ruby​​ 库文件或共享库 rspec

但是当我在实例上运行它时,它返回/home/user/.rvm/gems/ruby-2.4.0@global/gems/rspec-3.6.0/lib/rspec.rb

两者都使用全局 gemset。 可能是什么问题?

【问题讨论】:

【参考方案1】:

我设法使用

运行规范测试

sh 'bundle exec rake spec:unit'

它使用 rake 文件而不是运行单独的测试本身,这更加清晰明了。

这是 rakefile 的样子:

namespace :spec do
    RSpec::Core::RakeTask.new(:unit) do |t|`
        t.pattern = 'spec/unit/**/*_spec.rb'
    end
end

task default: ['spec:unit']

运行所有单元测试。

【讨论】:

尽管没有使用 Jenkins,但这对我很有用,因为相关位是您的答案是使用 bundle exec

以上是关于在 Jenkins 上运行时找不到 gem rspec-core (>= 0.a) (Gem::GemNotFoundException)的主要内容,如果未能解决你的问题,请参考以下文章

ld:安装mysql2 gem时找不到-lssl的库

尝试安装 pg gem 时找不到'libpq-fe.h 标头

自动化测试脚本中包含adb命令,jenkins构建时找不到adb解决办法

在物理设备上运行时找不到 -lBugsnagReactNative 的库

Couchapp - 在 Windows 上运行“couchapp generate ...”时找不到默认模板

在 Docker-Compose 上运行时找不到模块