我在使用Bundler安装Git依赖项时遇到问题。 bundle install
似乎成功完成:
Using gemname version from git://github.com/username/repo.git (at master)
Your bundle is complete!
但是,运行任何后续命令bundle exec
等都会失败:
git://github.com/username/repo.git (at master) is not yet checked out. Run `bundle install` first.
我注意到Bundler在获取gem时没有问题,但它被安装到本地/home/rails/.bundler/ruby/2.1.0/
目录中(以及为什么“Ruby 2.1.0”我不知道......)而不是它应该在/usr/local/rvm/gems/ruby-2.1.3/
和所有其他宝石一起。
我已经尝试清除本地Bundler缓存和配置并再次运行bundle install
,以防出现一个简单的问题,但这没有帮助。
Gem env:
- RUBYGEMS VERSION: 2.2.2
- RUBY VERSION: 2.1.3 (2014-09-19 patchlevel 242) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.1.3
- RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.1.3/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.1.3/bin
- SPEC CACHE DIRECTORY: /root/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/rvm/gems/ruby-2.1.3
- /usr/local/rvm/gems/ruby-2.1.3@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
答案 0 :(得分:0)
不要运行sudo bundle install
- 这会导致git gems被安装到错误的位置。
当作为无法写入普通gem安装位置(GEM_HOME
)的用户运行时,Bundler期望在$HOME/.bundler
中找到git gem。使用sudo
进行安装会绕过此行为(因为您可以以root身份写入任何位置),并且还要求您以root身份bundle exec
。
相反,在没有sudo的情况下运行bundle install
,与运行bundle exec
的用户相同。
如果需要root权限来安装其他gem,Bundler会在内部调用sudo。有关详细信息,请参阅http://bundler.io/man/bundle-install.1.html#SUDO-USAGE。
使用--deployment
标志可以避免此问题,因为在部署模式下,所有gem(git-sourced和其他)都安装在项目的vendor/bundle
目录中。