Can';t以systemd单元启动Ruby Sinatra应用程序-找不到gem

Can';t以systemd单元启动Ruby Sinatra应用程序-找不到gem,ruby,centos,rubygems,rvm,systemd,Ruby,Centos,Rubygems,Rvm,Systemd,我正在尝试启动Sinatra应用程序作为Systemd单元。 这不是第一次,这项服务以前是有效的,但现在我卡住了 systemctl启动服务总是抛出找不到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.r

我正在尝试启动Sinatra应用程序作为Systemd单元。 这不是第一次,这项服务以前是有效的,但现在我卡住了

systemctl启动服务
总是抛出找不到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
我已经检查过,
$:
是正确的,因此如果我尝试使用相同的路径,可以通过
irb
找到并包含所有gem

将CentOS 7与RVM Ruby 2.5.7一起使用


谢谢大家!

您对
/usr/bin/ruby
的引用绕过了RVM,听起来您正在使用RVM来管理您的gems

RVM似乎没有关于如何设置
systemd
服务的文档,但它有,这是一种类似的情况

基本上,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版本。

您的环境没有加载rvm,而您的rubies和gems似乎就在这个位置。有什么解决方案可以让systemd加载rvm env?
[Service]
ExecStart=/home/appuser/.rvm/wrappers/ruby-3.0.0@appgemset/ruby /usr/lib/app/server.rb