为什么不能使用ruby(在Travis CI中)找到我的捆绑安装的宝石?

时间:2015-04-06 23:55:45

标签: ruby bundler travis-ci

我正在尝试设置Travis CI,但ruby并没有像我期望的那样工作。

看起来Travis CI正在运行我的捆绑安装,但之后立即找不到ruby宝石。这是Travis日志:

$ ruby --version
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-darwin13.1.0]
$ rvm --version
rvm 1.25.33 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
$ bundle --version
Bundler version 1.7.4

[... snip ...]


$ bundle install --jobs=3 --retry=3 --deployment
Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Installing colorize 0.7.2
Installing json 1.8.1
Using bundler 1.7.4
Installing dnssd 2.0
Your bundle is complete!
It was installed into ./vendor/bundle
$ cat Gemfile.lock
GEM
  remote: https://rubygems.org/
  specs:
    colorize (0.7.2)
    dnssd (2.0)
    json (1.8.1)
PLATFORMS
  ruby
DEPENDENCIES
  colorize
  dnssd
  json
The command "cat Gemfile.lock" exited with 0.
$ ruby -e "require 'colorize'"
/Users/travis/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- colorize (LoadError)
    from /Users/travis/.rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from -e:1:in `<main>'
The command "ruby -e "require 'colorize'"" exited with 1.
Done. Your build exited with 1.

.travis.yml文件现在很简单:

language: objective-c
script:
  - cat Gemfile.lock
  - bundle env
  - ruby -e "require 'colorize'"

我认为我犯了一个简单的错误(可能是一个纯粹的红宝石错误),但我看不到它。我在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

Bundler没有神奇可用的东西;您需要在脚本中require 'bundler/setup'让Bundler设置加载路径。

Bundler会将你的宝石安装到你想要的任何路径,但这些宝石不一定会在你的Ruby加载路径中,所以require不一定会找到它们。在使用任何其他宝石之前,您可以让Bundler通过require 'bundler/setup'更改您的加载路径以指向已安装捆绑的宝石。这确实要求捆绑器已在您的加载路径中可用,这通常通过gem install bundler完成。 Travis预装了它,所以你不需要做任何特别的事情来使用它。

相关问题