我要复制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复制到目录中
使用神经通过设备复制文件的正确方法是什么
答案 0 :(得分:2)
使用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目录中,但建议在 有条理的方式。