我不擅长devops。我创建了一个名为 deploy 的用户。以前我可以通过 ssh 进入我的服务器
su deploy
并运行
RAILS_ENV=production bundle exec rails c
.
几天前,我完全忘记了我有一个名为 deploy 的用户。作为 root 用户,我使用 rvm 安装了 ruby。 RVM 已安装。
现在我记得我有一个名为 deploy 的用户。我跑了 su deploy 然后跑了
RAILS_ENV=production bundle exec rails c
我收到以下错误
The program 'bundle' is currently not installed. To run 'bundle' please ask your administrator to install the package 'ruby-bundler'
在我在 super 管理员环境中安装 ruby 之前,我可以在部署用户环境中运行 bundle。
有没有办法来解决这个问题?
PS:我的 capistrano 部署脚本运行没有任何问题,即使它是由“部署”用户部署的
最佳答案
问题是当你 ssh 进入目录时,在目录中,没有 .ruby-version
文件存在,所以它使用默认的 ruby 版本(运行 which ruby
来查看确切的路径),而不是 rvm ruby version
,所以它找不到像 bundler
这样的已安装 gem .
这是一个环境问题。 capistrano 部署正在工作,因为您在 deploy.rb 中分配了 ruby 版本,例如
set :rvm_ruby_version, 'ruby-2.2.2@zhitaotao'
所以它可以找到正确的 ruby 版本,然后找到
installed
版本的 gem 。解决方案是添加一个名为
.ruby-version
的文件, 将内容设置为 ruby-2.3.1
.如果这不起作用,我建议重新安装
ruby
, bundler
,然后运行 bundle install
对于 deploy
用户。我们需要确保在生产目录中,ruby 版本与 deploy.rb 中分配的 ruby 版本匹配。
关于ruby-on-rails - “未安装 bundle ”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43579188/