J'ai l'application Phoenix (je l'ai créée avec l'indicateur --api) qui a des données supplémentaires requises pour traiter les demandes que je stocke dans priv/data/filters.csv
.Lecture de fichiers dans Phoenix en mode production
Donc, cela fonctionne très bien en mode dev
, je peux lire ce fichier comme: File.stream!("priv/data/filters.csv")
, mais une fois l'application est livrée en utilisant mix edeliver update
ce fichier n'est plus accessible.
Je peux voir ce dossier dans le répertoire de construction, mais après que l'application est livrée, il n'y a pas de tel dossier priv
. Je ne suis pas sûr pourquoi il n'est pas copié pour livrer le dossier.
Qu'est-ce que je fais mal? Ai-je besoin de copier ces fichiers après le processus de livraison? Où puis-je stocker mes fichiers que je dois utiliser en mode prod?
Quel est le contenu de 'rel/config.exs'? – mudasobwa
Essayez 'File.stream! (Path.join (: code.priv_dir (: mon_app)," data/filters.csv "))'. – Dogbert
Un moyen rapide de tester cela est d'ouvrir une remote_console à votre instance de production. Vous pouvez ensuite taper 'pwd' dans iex pour voir où commence votre chemin relatif. Ensuite, essayez l'appel à ': code.priv_dir (: my_app)' et très le chemin absolu. –