【发布时间】:2017-09-25 19:16:53
【问题描述】:
我正在尝试使用 Capistrano、Passenger 和 RVM 将 Rails 应用程序从 Windows 开发机器部署到 Debian 9 VPS。我在 VPS 上使用 Apache 设置了 RVM 和 Passenger,在 Windows 机器上设置了 Capistrano。但是,当我尝试运行 cap production deploy 时,出现以下错误:
bundler: failed to load command: rake (/var/www/APPNAME/shared/bundle/ruby/2.4.0/bin/rake)
在 Windows 上开发的一个怪癖是必须在部署时编辑 Gemfile.lock 以删除特定于 Windows 的 gems 版本。我编写了一个自定义任务来执行此操作,它似乎按预期运行。
以下是一些可能有用的文件:
【问题讨论】:
-
你检查过
/var/www/APPNAME/shared/bundle/ruby/2.4.0/bin/rake是否存在于VPS上吗?您的 capistrano ssh 用户是否在 rvm 组中?在尝试调用 ruby 脚本之前,您的 capistrano 设置是否获取 rvm 环境? -
我检查了,文件存在。 VPS上没有名为“rvm”的组; rvm 安装到 ssh 用户的主目录中。我正在使用 capistrano-rvm gem,并且源命令在 ssh 用户的 bashrc 中,所以我认为正在加载环境。
-
我建议测试这个假设,rvm 非常脆弱。
标签: ruby-on-rails rvm capistrano passenger bundler