2016-06-07 19 views
6

In script Ruby, si potrebbe semplicemente fare:Come caricare una libreria di elisir in un semplice script di elisir?

require 'some-gem' 

SomeGem.do_something! 

Come posso fare qualcosa di simile in elisir exs script senza creare un nuovo progetto di mix di marche? Finora ho cercato su google modi per farlo, e leggere alcuni post del blog (such as this), ma non riesco a capire una (leggi 'semplice') modo corretto di fare questo.

In particolare, desidero utilizzare HTTPoison nel mio script di elisir.

risposta

3

Non ci sono pacchetti globale installa in Elixir, come ci sono in Ruby. Mentre potrebbe essere tecnicamente possibile compilare le dipendenze in .beam file e aggiungerli al percorso di carico degli script (come l'articolo si è collegato al fa), se si vuole un comportamento in qualche modo simile a Ruby, ti consiglierei di fare uso di mix run per eseguire script arbitrari con tutte le dipendenze del progetto caricate.

Creare un progetto globale mix con tutte le dipendenze che si desidera specificati nel mix.exs, scrivere il codice in qualsiasi file .exs (non deve essere nella stessa cartella), ed eseguirlo da

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

È anche possibile creare uno script di shell wrapper per eseguire automaticamente quanto sopra richiamando semplicemente my-elixir script.exs.

(Lo faccio regolarmente durante il test del codice per le risposte qui su StackOverflow che utilizzano alcune dipendenze comuni come HTTPoison e/o Poison.)

1

Senza mix, questo potrebbe essere un po 'complessa, ma fattibile.

io penso che si debba aggiungere in modo esplicito il percorso in cui HTTPoison è compilato sulla parte superiore dello script EXS.

Elixir fornisce un'API Code.expand_path per anteporre un percorso all'inizio dell'elenco di percorsi del codice VM di Erlang. È possibile trovare ulteriori informazioni sull'API here.