2017-01-09 3 views
1

Я пытаюсь сделать работу с IEx.pry следующего примером коды:Почему я не могу заставить IEx.pry работать в Windows?

require IEx; 

defmodule Example do 
    def double_sum(x, y) do 
    IEx.pry 
    hard_work(x, y) 
    end 

end 

Example.double_sum(1, 2) 

Когда я запускаю его я получаю следующее сообщение об ошибке:

Cannot pry #PID<0.106.0> at lib/example.ex:5. Is an IEx shell running? If you are Windows, you may need to start IEx with the --werl flag. 

В ответ я начал IEX с --werl и он открыл оболочку erlang.

В оболочке erlang я попытался сменить каталоги, чтобы запустить файл. Я сделал это, набрав:

cd(c:/Users/william/Desktop/example) 

я получил следующее сообщение об ошибке:

(SyntaxError) iex:1: keyword argument must be followed by space after: c: 
+1

Для последнего вопроса вам необходимо обернуть путь в строку: 'cd (" c:/Users/william/Desktop/example ").'. – Dogbert

ответ

3

Предполагая, что код модуля находится в "c:/Users/william/Desktop/example.ex", можно ввести iex и заставить компиляцию оттуда:

iex> c "c:/Users/william/Desktop/example.ex" 

Request to pry #PID<0.89.0> at /tmp/a.ex:5 

    defmodule Example do 
     def double_sum(x, y) do 
     IEx.pry 
     x + y 
     end 

Allow? [Yn] y 

Interactive Elixir (1.5.0-dev) - press Ctrl+C to exit (type h() ENTER for help) 
pry(1)> 

Другим вариантом было бы использовать mix для управления исходным кодом, даже такой простой исходный код. mix новый создаст новый пакет. Чтобы включить поддержку IEx.pry в mix следует запускать mix задачи предваряется iex -S:

iex -S mix # for just iex in mix environment 

или:

iex -S mix phoenix.server 

включить поддержку IEx.pry в приложении феникс.

Sidenote: точка с запятой после require IEx является избыточным и является кодом запаха.

Смежные вопросы