在自己的目录之外运行捆绑程序部署的Ruby应用程序?

问题描述 投票:19回答:2

我正在编写一个基于Ruby的守护程序来在我的Ubuntu服务器之一上运行。我希望它在启动时运行,因此将为此编写一个新贵的作业文件。但是,我已经使用捆绑程序来管理它使用的各种gem,并打算在将其部署到服务器后执行此操作:

bundle install --deployment

这将捆绑程序置于所谓的“部署模式”,通过该模式,可以设置各种选项,并将所有gem都安装在“供应商”目录中,而不是系统范围内。但是,这会在运行时产生问题,因为必须在其自己的目录中执行它,因为这是gem所在的位置:]

<in the app's dir>
$ ./runmyapp
<it runs>

如果我cd到另一个位置,然后尝试使用它的完整路径运行它,它将失败:

<in another directory>
$ /path/to/runmyapp
<it crashes as it can't locate its gems>

我已经阅读了很多捆绑器文档,而整个方案甚至都没有涉及?我应该只将gems安装到系统上吗?还有什么我应该做的吗?

我正在编写一个基于Ruby的守护程序来在我的Ubuntu服务器之一上运行。我希望它在启动时运行,因此将为此编写一个新贵的作业文件。但是,我用过...

ruby rubygems bundler
2个回答
35
投票

您使用捆绑程序作为应用程序的gem管理器。我认为在这种情况下,使用bundle exec是运行可执行文件的最佳方法。


0
投票

我自己解决了一个类似的问题,最终创建了一个包装脚本,

© www.soinside.com 2019 - 2024. All rights reserved.