2016-06-07 2 views
6

, 나는 간단하게 할 수있는 :간단한 엘릭서 스크립트에서 엘릭서 라이브러리를로드하려면 어떻게해야합니까? 루비 스크립트에서

require 'some-gem' 

SomeGem.do_something! 

어떻게 새로운 믹스 프로젝트를 만들지 않고 exs 스크립트 불로 불사의 영약에서 비슷한 일을 할 수 있습니까? 지금까지 Google에서이 작업을 수행하는 방법을 검색했으며 몇 가지 블로그 게시물 (such as this)을 읽었지만 적절한 방법 ('간단한'방법)을 찾아 낼 수 없습니다.

특히, 내 엘 릭크 스크립트에 HTTPoison을 사용하고 싶습니다.

답변

3

Ruby에서와 같이 Elixir에는 글로벌 패키지 설치가 없습니다. 의존성을 .beam 파일로 컴파일하고 링크 된 기사와 같이 스크립트의로드 경로에 추가하는 것이 기술적으로 가능할 수도 있지만 (Ruby와 비슷한 방식의 동작을 원한다면) 사용을 권장합니다. mix run은 모든 프로젝트 종속성이로드 된 임의의 스크립트를 실행합니다.

, 당신이 mix.exs에 지정된 원하는 모든 종속성 하나 개의 글로벌 mix 프로젝트를 만들고 어떤 .exs 파일의 코드를 (같은 폴더에 있어야 할 필요는 없습니다), 쓰기 및

cd /path/to/mix/project && mix run /path/to/.exs 

하여 실행 my-elixir script.exs을 호출하여 위의 작업을 자동으로 수행하는 래퍼 셸 스크립트를 만들 수도 있습니다.

(나는 정기적으로 HTTPOison 및/또는 Poison과 같은 몇 가지 공통 종속성을 사용하는 StackOverflow에 대한 답변 코드를 테스트하는 동안 이것을 수행합니다.)

1

혼합하지 않으면 약간 복잡하지만 수행 할 수 있습니다.

HTTPoison이 exs 스크립트 맨 위에 컴파일 된 경로를 명시 적으로 추가해야한다고 생각합니다.

Elixir은 Erlang VM 코드 경로 목록의 시작 부분에 경로를 추가하기 위해 API Code.expand_path을 제공합니다. API here에 대한 자세한 설명을 찾을 수 있습니다.

관련 문제