我对devops并不擅长。我创建了一个名为deploy的用户。以前我可以ssh到我的服务器然后
su deploy
并运行
RAILS_ENV =生产包exec rails c
。
前几天,我完全忘记了我有一个名为deploy的用户。作为root用户,我使用rvm安装了ruby。 RVM已经安装。
现在我记得我有一个名为deploy的用户。我运行su deploy然后运行
RAILS_ENV =生产包exec rails c
我收到以下错误
目前尚未安装程序'bundle'。运行'捆绑' 请让管理员安装软件包'ruby-bundler'
在我在super admin env中安装ruby之前,我可以在部署用户环境中运行bundle。
有没有办法解决这个问题?
PS:我的capistrano部署脚本运行没有任何问题,即使它是由“部署”用户部署的
答案 0 :(得分:3)
问题是,当你进入目录时,在目录中,没有.ruby-version
文件存在,所以它使用默认的ruby版本(运行which ruby
来查看确切的路径),而不是rvm ruby version
,因此无法找到已安装的宝石,例如bundler
。
这是一个环境问题.capistrano部署正在运行,因为您已在deploy.rb中分配了ruby版本,如
set :rvm_ruby_version, 'ruby-2.2.2@zhitaotao'
所以它可以找到正确的ruby版本,然后找到版本的installed
gems。
解决方案是添加名为.ruby-version
的文件,将内容设置为ruby-2.3.1
。
如果这不起作用,我建议重新安装ruby
,bundler
,并为bundle install
用户运行deploy
。我们需要确保在生产目录中,ruby版本与deploy.rb中指定的ruby版本匹配。