Rails 控制台在使用 /usr/bin/env 加载环境变量后未启动



我的 RoR 应用程序未正确加载,在将环境变量加载到文件.env时发生第一个错误。

该脚本很简单,(应该(加载 .env 以启动 Rails 控制台:

basedir=/home/mapaapp/mapaapp/
cd $basedir/current
env $(cat $basedir/shared/.env | xargs) rails c
cd -

加载脚本时我得到了两个响应:cat: /shared/.env: No such file or directory,即使知道这个目录中有一个 .env 文件env: #: No such file or directory,我相信它指的是/usr/bin/env,它也存在。

此应用运行:

  • Ubuntu 15.10 (GNU/Linux 4.2.0-42-generic x86_64(
  • 导轨 4.2.1
  • 红宝石 2.2.2p95
  • nginx 1.9.3
  • 美洲狮 2.15.3

知道是什么阻止rails c开始吗?如果需要任何其他信息,我很乐意提供。

我想我会尝试的第一个想法是为您的路径使用一个字符串(更安全(并使用它的完整路径调用 env 可执行文件,因为 bash 脚本在子外壳中运行,env 命令可能不在 $PATH 变量中:

basedir="/home/mapaapp/mapaapp/"
cd "$basedir/current"
/usr/bin/env $(cat "$basedir/shared/.env" | xargs) rails c
cd -

现在看来你没有向 xargs 传递任何命令 具有以下格式的命令:

$(echo 1)

表示在子外壳中的括号之间执行命令并返回结果。所以我可以将值 1 分配给这样的变量:

a=$(echo 1)

所以我会尝试修改该行以确保使用 .env 文件中的参数:

/usr/bin/env $(cat "$basedir/shared/.env") | xargs rails c

最新更新