我有2个Rails 3.2.11应用程序运行在Ubuntu 12.04服务器上,带有Nginx,Unicorn和Postgresql。部署是通过 git 和 capistrano 进行的。
安装第二个应用程序后,我发现 Capistrano 在上限部署期间会失败,因为它"找不到 gem 源",我需要使用 sudo 安装每个丢失的 gem。在此之后,上限部署工作正常,应用程序也是如此。报告从任一应用中的当前目录运行捆绑安装,使用所有正确的 Gem。
我很困惑 Capistrano 需要在更新我的应用程序之前找到宝石,因为我过去的经验(我认为)是我可以从当前目录运行捆绑安装,以在上限部署后安装任何新的或更新的宝石。
今天,我决定在我的开发笔记本电脑上使用 rbenv 更新我的 Ruby 版本。我需要从.rbenv/plugins/ruby-build运行git pull,然后rbenv rehash,然后我可以安装新的Ruby版本。一切都很好,ruby-v 报告新版本 19.3-p374。
现在,当我从我的应用程序dev dir运行rails服务器(rails s)时,我得到rbenv: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
rails的命令存在于这些Ruby版本中:1.9.3-p327"。
因此,我认为有两个问题是相关的:-
-
如何使用捆绑安装使服务器上的每个应用程序独立运行自己的 Gem?我不想冻结宝石,并且很高兴同时使两个应用程序保持最新状态。我应该继续使用 sudo 安装所需的 gem 吗?
-
如何解决新版本找不到导轨的rbenv问题?
我需要重新安装所有宝石。Gem 安装捆绑程序,然后从每个应用程序目录捆绑更新。