gpt4 book ai didi

ruby - 无法将 Ruby Sinatra 应用程序作为 systemd 单元启动 - 找不到 gem

转载 作者:行者123 更新时间:2023-12-04 19:30:54 25 4
gpt4 key购买 nike

我正在尝试将 Sinatra 应用程序作为 Systemd 单元启动。
这不是第一次,这项服务以前可以工作,但现在我被卡住了。systemctl start service总是抛出找不到 gem sinatra
这是日志:

Nov 27 19:52:45 cloud.onehostcloud.hosting ruby[29074]: /usr/local/rvm/rubies/ruby-2.5.7-devel/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- sinatra (LoadError)
Nov 27 19:52:45 cloud.onehostcloud.hosting ruby[29074]: from /usr/local/rvm/rubies/ruby-2.5.7-devel/lib/ruby/site_ruby/2.5.0/rubygems/core_ext/kernel_require.rb:54:in `require'
Nov 27 19:52:45 cloud.onehostcloud.hosting ruby[29074]: from /usr/lib/app/server.rb:34:in `<main>'
Nov 27 19:52:45 cloud.onehostcloud.hosting systemd[1]: app.service: main process exited, code=exited, status=1/FAILURE
app.service 文件:
[Unit]
Description=API Server Service

[Service]
Type=simple
Group=appuser
User=appuser
ExecStart=/usr/bin/ruby /usr/lib/app/server.rb
StartLimitInterval=30
StartLimitBurst=3
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
我检查了 $:是正确的,所以如果我尝试使用相同的路径,所有 gem 都可以通过 irb 找到并包含在内
将 CentOS 7 与 RVM Ruby 2.5.7 一起使用
谢谢!

最佳答案

您对 /usr/bin/ruby 的引用正在绕过 RVM,听起来您正在使用 RVM 来管理您的 gem。
RVM 似乎没有关于如何设置 systemd 的文档。服务,但确实如此have guidance on launching scripts from cron , 这是类似的情况。
基本上,RVM 为 ruby​​ 版本和 gemset 的每个组合提供了一个包装器,您可以在 app.service 中使用它。文件。您的 ExecService行看起来像这样:

[Service]
ExecStart=/home/appuser/.rvm/wrappers/ruby-3.0.0@appgemset/ruby /usr/lib/app/server.rb
如果您还没有为您的应用程序创建特定的 gemset,那么您可以省略 @appgemset部分,并且仅指定您要使用的 ruby​​ 版本。

关于ruby - 无法将 Ruby Sinatra 应用程序作为 systemd 单元启动 - 找不到 gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65042558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com