我是凤凰应用程序(我使用--api标志创建它),它有一些额外的数据来处理我存储在priv/data/filters.csv
中的请求。
所以它在dev
模式下工作正常,我可以读取此文件,如:File.stream!("priv/data/filters.csv")
,但是一旦使用mix edeliver update
传递应用,此文件就不再可访问了。
我可以在构建目录中看到此文件夹,但在应用程序发布后,没有这样的文件夹priv
。我不确定为什么它没有复制到发送文件夹。
我做错了什么?我是否需要在交付流程后复制这些文件? 我在哪里可以存储我必须在prod模式下使用的文件?
答案 0 :(得分:5)
您应该使用:code.priv_dir/1
在运行时获取应用程序的priv
目录的绝对路径。这将适用于由例如Erlang创建的Erlang版本。酒厂:
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
。
答案 1 :(得分:1)
我遇到了类似的问题,并设法使用Application.app_dir(my_app, "priv")
答案 2 :(得分:0)
您应该在lib/YOUR_APP/endpoint.ex
中检查您的配置。
默认情况下,Plug.Static
white会列出所提供的文件。
尝试在only: ~w(...)
列表中添加文件。