Bundler似乎无法通过Rbenv找到正确的Ruby

ist*_*ses 8 ruby capistrano ruby-on-rails bundler rbenv

多年来我一直使用RVM作为我的Ruby版本管理器,但我想切换到rbenv以简化它.但是我发现部署有些奇怪的问题.这里似乎出错了:

# env RBENV_ROOT=\"/home/deploy/.rbenv\" PATH=\"/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:$PATH\"  /home/deploy/.rbenv/bin/rbenv exec bundle install --gemfile /domains/myapp.com/releases/20140119013611/Gemfile --path /domains/myapp.com/shared/bundle --deployment --without development test

> rbenv: bundle: command not found

> The `bundle' command exists in these Ruby versions:
> 2.0.0-p353
Run Code Online (Sandbox Code Playgroud)

好的,所以我指定了我想要的rbenv版本 -

# env RBENV_ROOT=\"/home/deploy/.rbenv\" PATH=\"/home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:$PATH\" RBENV_VERSION=\"2.0.0-p353\" /home/deploy/.rbenv/bin/rbenv exec bundle install --gemfile /domains/myapp.com/releases/20140119013611/Gemfile --path /domains/myapp.com/shared/bundle --deployment --without development test
> rbenv: version `"2.0.0-p353"' is not installed
Run Code Online (Sandbox Code Playgroud)

呵呵.那真是怪了.

# rbenv versions
> system
> * 2.0.0-p353 (set by /home/deploy/.rbenv/version)
Run Code Online (Sandbox Code Playgroud)

知道我哪里错了吗?该bundle install命令似乎认为2.0.0-p353不存在,但rbenv versions显示它.可能是什么?

小智 20

安装bundler工具:gem install bundler.

安装项目的依赖项:bundle install


set*_*all 4

我相信这是一个逃避问题。

我可以像这样成功设置当前的 ruby​​ 版本:

rbenv local 2.0.0-p247

或这个:

rbenv local "2.0.0-p247"

但是,如果我转义引号,我会收到与您完全相同的错误(请注意错误响应中的引号):

> rbenv local \"2.0.0-p247\"
rbenv: version `"2.0.0-p247"' not installed
Run Code Online (Sandbox Code Playgroud)

请注意,引号通常不在伪造版本周围:

> rbenv local 2.0.0-p111
rbenv: version `2.0.0-p111`
Run Code Online (Sandbox Code Playgroud)

因此,总而言之,我猜测在您的第一个代码片段中调用了无捆绑程序的系统 ruby​​,并且由于 RBENV_VERSION 引用问题,您还没有看到尝试与 rbenv 托管版本捆绑的成功尝试。