我使用领类将我的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/