我有 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"。
所以,我认为有两个问题是相关的:-
如何使用 bundle install 让我的服务器上的每个应用程序独立运行自己的 gem?我不想冻结这些宝石,我很高兴让这两个应用程序同时保持最新状态。我是否应该继续使用 sudo 安装所需的 gem?
如何解决新版本的rbenv找不到rails的问题?