【问题标题】:Bundler can't seem to find correct Ruby through RbenvBundler 似乎无法通过 Rbenv 找到正确的 Ruby
【发布时间】:2014-01-19 01:48:52
【问题描述】:

多年来,我一直使用 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

好的,所以我指定我想要的 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

嗯。这很奇怪。

# rbenv versions
> system
> * 2.0.0-p353 (set by /home/deploy/.rbenv/version)

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

【问题讨论】:

  • 顺便问一下,这是部署到服务器上吗?
  • @sethcall 是的,是的。我试图在以“部署”用户身份登录到我的服务器时在命令行执行此操作,因为我的 Capistrano 部署不起作用。
  • 我想这是 capistrano 做事的方式......只是我真的很讨厌使用 RVM 或 rbenv 下载 + 编译 ruby​​ 到我的服务器,更喜欢使用 debian:github.com/sethcall/ubuntu-ruby-package-builder。主要是因为它具有可重复性、速度更快且不易出现这些棘手的环境问题。 rbenv 比 rvm 更直接用于服务器部署,不过......

标签: ruby-on-rails ruby capistrano bundler rbenv


【解决方案1】:

安装打包工具:gem install bundler。

安装项目的依赖:bundle install

【讨论】:

  • 这是我重新安装 ruby​​ 2.1.2 后手到头的时刻。
  • 当您遇到以下情况时,此答案也有效:“这些 Ruby 版本中存在 `bundle' 命令:”如果您刚刚升级了 ruby​​。你真棒。谢谢!
【解决方案2】:

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

我可以像这样成功设置当前的 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

请注意,引号通常不在虚假版本周围:

> rbenv local 2.0.0-p111
rbenv: version `2.0.0-p111`

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

【讨论】:

  • 这是一个很好的假设,你说得对,转义的引号有点奇怪。当我删除 all 转义的反斜杠时,结果出现了,而不仅仅是版本号周围的反斜杠,安装的包。 (或者说确实如此。)现在我遇到了其他错误,但那是另一个 SO 帖子!感谢您帮助我迈出了第一步。 :)
猜你喜欢
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2023-03-29
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多