당신의 도움이 필요합니다! 응용 프로그램이 자동으로 시작되기 전에 (증분 - https://hexdocs.pm/distillery/boot-hooks.html#content을 통해) 증류소 릴리스 (Elixir-Application)에서 마이그레이션을 실행하려고합니다. 개발 및 프로덕션 플랫폼은 Windows 여야합니다.자동으로 마이그레이션 실행 Windows에서 Elixir-Distillery-Release의 pre_start
문제점 : Windows (.bat)에 관한 모든 정보를 찾을 수 없습니다. - 문제를 참조하는 스크립트 - "pre_start.bat"파일을 검색합니다. - 파일 - ERTS 노드와 마지막으로 Elixir-Code를 호출합니다. 그 안에.
내 증류소 - 설정 : \ config.exs
environment :prod do
...
set pre_start_hook: "rel/hooks/pre_start"
...
end
필요한 스크립트는 α- 함수 은 내가 어떻게 이것을 달성 할 수있는 "Elixir.MyApp.ReleaseTask.migrate"내 코드를 호출해야합니다과 rel? 다음 코드는 필자가 지금까지 가지고 ..하지만 일을 나던 것입니다
..이와 메신저 완전히 잘못된
@echo off
echo Running migrations
echo.
echo.
echo.
cd %RELEASE_ROOT_DIR%
@set system_erl="<erl_directory>\erts-9.1\bin\erl.exe"
@set erl=%system_erl%
@set system_root_dir_cmd=%system_erl% -noshell -eval "io:format(\"~s\", [filename:nativename(code:root_dir())])." -s init stop
@set rootdir=%system_root%
@set system_erts_vsn_cmd=%system_erl% -noshell -eval "Ver=erlang:system_info(version),io:format(\"~s\", [Ver])" -s init stop
@set erts_vsn=%system_erts_vsn%
@set erts_dir=%rootdir%\erts-%erts_vsn%
@set rel_name="my_api"
@set rel_vsn="1.0"
@set consolidated_dir=%rootdir%\lib\%rel_name%-%rel_vsn%\consolidated
@%erl% -boot_var ERTS_LIB_DIR "%erts_dir%\..\lib"^
-hidden -noshell -boot start_clean^
-pa "%consolidated_dir%"^
-s "Elixir.MyApp.ReleaseTasks" "seed" -s init stop
echo Migrations run successfully
저를 수정하십시오. 도움을 주시면 감사하겠습니다. BTW 그것의 피닉스 - 응용 프로그램.
여기에'.bat' 파일을 사용하는 이유가 있습니까? 이 특정 함수를 실행하는 erlang의 네이티브'escript'를 생성하여'pre_start'로 사용합니다. – mudasobwa
모든 코드 줄 앞에'@'기호가 필요하지 않습니다. '@echo off '를 선언하면 더 이상 자세한 출력을 억제 할 필요가 없습니다. – Squashman
@ mudasobwa는 대략 어떻게 설명 할 수 있습니까? 감사! – quax