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

时间:2017-08-14 11:04:30

标签: ruby jenkins rspec

我正在尝试在Jenkins文件中运行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':找不到宝石耙(> = 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是明确安装的,因为我在运行spec测试之前进行了bundle安装。我也运行与实例本身完全相同的测试,而不是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 个答案:

答案 0 :(得分: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']

运行所有单元测试。