阅读在生产模式在凤凰文件(Read files in Phoenix in production m

2019-09-29 22:02发布

我有凤凰的应用程序(我--api标志创造了它),有处理,我存储在请求需要一些额外的数据priv/data/filters.csv

所以,它工作在精细dev模式,我可以读取该文件,如: File.stream!("priv/data/filters.csv")但一旦应用程序使用提供mix edeliver update该文件无法访问了。

我可以看到在build目录此文件夹,但应用交付后,有没有这样的文件夹priv 。 我不知道为什么它不会复制到文件夹传送。

我做错了吗? 我是否需要复制这些文件传递过程之后? 我在哪里可以存储我的文件,我在PROD模式下使用?

Answer 1:

您应该使用:code.priv_dir/1获得绝对路径priv您在运行的应用程序的目录。 这将通过如酒厂创建二郎发布工作:

File.stream!(Path.join(:code.priv_dir(:my_app), "data/filters.csv"))

对我来说,做后MIX_ENV=prod mix release ,文件priv/foo被复制到_build/prod/lib/my_app/priv/foo



Answer 2:

我有一个类似的问题,并设法用它来解决Application.app_dir(my_app, "priv")



Answer 3:

您应该检查在配置lib/YOUR_APP/endpoint.ex 。 默认情况下Plug.Static白色列出了服务的文件。 尝试在加入你的文件only: ~w(...)名单。



文章来源: Read files in Phoenix in production mode