我想复制ca文件建立ssl连接。我把 CA 放在里面
lib
lib/
mymodule.ex #using the ca path here
mycrt.crt
然后使用
mix firmware
我给出这样的相对路径
def getPath() do
{path,0} = System.cmd("pwd",[])
String.replace(path,"\n","/lib/mycrt.crt")
end
但是我们使用
iex -S mix
在主机上运行所以我必须在/lib
之前加上
mycrt.crt
我不确定它是否在
/lib
中正确复制或pwd
在设备上刻录后是否获得正确的路径。这是正确的做法吗?因为当我在设备上做 ls
时,我看不到 mycrt.crt
复制到目录中
使用 Nerves 通过设备复制文件的正确方法是什么?
而不是
lib
使用priv
,所以:
priv/mycrt.crt
然后在代码中:
Path.join(:code.priv_dir(:my_app), "mycrt.crt")
见https://erlang.org/doc/man/code.html#priv_dir-1.
或者,您可以使用模块属性在编译时读取文件内容:
@crt_bin File.read!("lib/mycrt.crt")
无论您只是希望文件在目标上可用,还是想要模块属性版本,我建议将文件存储在
priv
中:http://erlang.org/doc/design_principles/applications.html# 7.4。特别是:
- 可选。用于特定于应用程序的文件。priv
和:
priv 目录保存应用程序在运行期间需要的资产 运行。可执行文件应驻留在 priv/bin 中并动态链接 库应该驻留在 priv/lib 中。其他资产可自由驻留 在 priv 目录中,但建议它在 结构化方式。