Elixir / Phoenix System cmd启动服务器

时间:2017-05-26 09:30:26

标签: elixir phoenix-framework

我已经使用Distillery发布了一个版本,所以我可以用./bin/app start启动它,现在我正试图用elixir启动它,就像这样:

path = "/Users/user/app/0.0.1/bin/"
System.cmd("./app", ["start"], cd: path)

但不幸的是,得到:enoent错误。我想这是因为./app不是真正的命令,而是文件。所以,我的问题是,是否可以使其与System.cmd一起使用?

我尝试使用Enum.join([executable, "start"], " ") |> String.to_char_list |> :os.cmd,但如果发生错误,此方法不会提供错误。所以我更愿意将其存档,但使用System.cmd

任何建议表示赞赏,谢谢!

1 个答案:

答案 0 :(得分:1)

如果可执行文件不在System.cmd/3中的目录中,则

PATH需要可执行文件的绝对路径:

  除非给出绝对路径,否则

command应该是PATH中可用的可执行文件。

您的应用程序的目录很可能不在PATH中,因此您可以将绝对路径传递给应用程序,如下所示:

System.cmd(Path.join(path, "app"), ["start"], cd: path)