1

我有 2 个 Rails 3.2.11 应用程序在带有 Nginx、Unicorn 和 Postgresql 的 Ubuntu 12.04 服务器上运行。部署是由 git 和 capistrano 完成的。

安装第二个应用程序后,我发现 Capistrano 在 cap 部署期间会失败,因为它“找不到 gem 源”,我需要使用 sudo 安装每个缺少的 gem。在此之后,cap deploy 工作正常,应用程序也是如此。从任一应用程序的当前目录运行 bundle install 报告使用所有正确的 gem。

我很困惑 Capistrano 需要在更新我的应用程序之前找到 gem,因为我过去的经验(我认为)是我可以从当前目录运行 bundle install 以在 cap 部署后安装任何新的或更新的 gem。

今天,我决定在我的开发笔记本电脑上使用 rbenv 更新我的 Ruby 版本。我需要从 .rbenv/plugins/ruby-build 运行 git pull ,然后运行 ​​rbenv rehash 然后我可以安装新的 Ruby 版本。很好,ruby-v 报告了新版本 19.3-p374。

现在,当我从我的应用程序开发目录运行 rails server (rails s) 时,我得到 rbenv: rails: command not found。rails的rails' command exists in these Ruby versions: 1.9.3-p327. rbenv version reports 1.9.3-p374. Rbenv which rails and bundle install both report "command not found: with rbenv error "The命令存在于以下 Ruby 版本中:1.9.3-p327"。

所以,我认为有两个问题是相关的:-

  1. 如何使用 bundle install 让我的服务器上的每个应用程序独立运行自己的 gem?我不想冻结这些宝石,我很高兴让这两个应用程序同时保持最新状态。我是否应该继续使用 sudo 安装所需的 gem?

  2. 如何解决新版本的rbenv找不到rails的问题?

4

1 回答 1

0

我需要再次重新安装所有 gem。Gem 安装捆绑程序,然后从每个应用程序目录进行捆绑更新。

于 2013-01-26T10:19:36.413 回答