我使用领类将我的Procfile导出到 Upstart 任务。

程序文件:

web: bundle exec rails server
websocket: bundle exec rails runner websocket-server/em_websocket.rb

Upstart 任务之一(它们非常相似,并且由于相同的错误而失败):
start on starting app-web
stop on stopping app-web
respawn

env PORT=5000

setuid app

chdir /var/www/app

exec bundle exec rails server

和错误(我是通过dmesg获得的):
[35207.676836] init: Failed to spawn app-websocket-1 main process: unable to execute: No such file or directory
[35207.679577] init: Failed to spawn app-web-1 main process: unable to execute: No such file or directory

当我切换到应用程序用户时,实际上可以从给定目录运行bundle exec rails server

有什么办法可以解决更多错误吗?我没有在/var/log/upstart/中找到任何相关的日志。

最佳答案

如果您是通过RVM安装的ruby,则有可能在rvm脚本运行之前运行了init。您是否尝试过使用对捆绑箱的绝对引用?

whereis bundle

获得它

RVM显然未初始化,或者在 Upstart 环境中不可用。幸运的是,rvm在这种情况下具有包装器:https://rvm.io/integration/init-d

关于ruby-on-rails - 工头生成的 Upstart 任务找不到文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25159802/

10-13 02:19