`require': 无法从 bash 脚本加载这样的文件 - 运行 ruby

`require': cannot load such file - Running ruby from bash script

我正在尝试 运行 ruby 脚本作为我的 centos 机器上的服务。我可以直接从命令行和 bash 文件 运行 ruby 脚本,没有问题。

但是,当我尝试通过 /etc/init.d 将其作为服务 运行 时,我收到错误 'require': cannot load such file -- somegem.

#! /home/user/.rvm/rubies/ruby-2.1.5/bin/ruby
# encoding: utf-8

require "somegem"

我创建了一个 init.d 脚本并将其放在 /etc/init.d/

#!/bin/sh
# monitor_endpoint
# chkconfig: 2345 20 80

# Source function library.
. /etc/rc.d/init.d/functions

#Define variables
prog="monitor_endpoint"
exec=/home/user/Workspaces/test/bin/test.rb
echo $exec

start() {
    echo -n $"Starting $prog: "
    # use daemon to start the service
    daemon $exec &
    retval=$?
    echo
    return $retval
}

etc...

这会不会是我的 gems 安装路径有问题?

任何帮助将不胜感激,因为这是我第一次尝试 运行 以这种方式创建 ruby 脚本。谢谢。

问题出在您的环境(环境变量)中。 运行

env

在正常环境中,然后 运行 它从初始化脚本并将输出通过管道传输到文件。

看看差异。

我猜你错过了所有 ruby 特定的东西(GEM_PATH 和所有)