Как работать с Elixir и Phoenix на платформе Windows.

Часто при разработке в Windows, по крайней мере, когда не используются собственные языки и инструменты Microsoft, вы сталкиваетесь с множеством трудностей, которые, похоже, не беспокоят тех, кто работает в мире Linux и Mac. Я сам сталкивался с этими проблемами, используя Python, Ruby и другие. Я рад сообщить вам, что разрабатывать приложения Elixir / Phoenix в Windows так же просто, как и на других платформах.

Помимо работы, которую Microsoft проделала, чтобы сделать языки с открытым исходным кодом более приветливыми, и повсеместного распространения Erlang, вы можете получить первоклассную среду разработки на компьютере с Windows. Вот шаги, которые я выполнил, чтобы настроить свой.

Шаг 1. Установите Chocolaty

Этот шаг не является обязательным, но рекомендуется. Установите Chocolaty, чтобы сделать следующие шаги простыми и быстрыми. Вместо того, чтобы загружать несколько пакетов со всего интербука, позвольте Chocolaty сделать эту работу за вас.

Мы будем следовать инструкциям на странице установки Chocolaty, чтобы установить менеджер пакетов Chocolaty, с помощью которого вы сможете установить все инструменты, используемые ниже. Откройте командную строку Windows в режиме администратора. Для этого щелкните меню Пуск (или нажмите клавишу Windows) и введите cmd.exe. Элемент с надписью Командная строка должен появиться в верхней части списка поиска. Щелкните его правой кнопкой мыши и выберите Запуск от имени администратора.

Затем введите следующую команду в командной строке:

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

Скажите «Да», когда вас спросят, и это установит Chocolaty.

Вам не нужно использовать Chocolaty. Поэтому я добавлю ссылки для загрузки обычных установщиков.

Шаг 2: установите Nodejs

Откройте командную строку в режиме администратора и введите:

choco install nodejs

(или перейдите на https://nodejs.org/en/, чтобы загрузить обычный установщик Windows).

Ответьте «да», когда будет предложено запустить сценарий установки. После завершения перезапустите командную строку, чтобы загрузить новые переменные среды, добавленные сценарием установки. Чтобы подтвердить установку узла, введите

node -v
npm -v

чтобы проверить номер установленной версии. На момент публикации этого сообщения версия для Node - 6.4.0. Также проверьте npm, введя «npm -v». Получаю версию 3.10.3.

Шаг 3. Установите Erlang и Elixir

Затем в командной строке в режиме администратора введите

choco install erlang

Это установит версию 19 экосистемы Erlang / OTP. После завершения установки Erlang введите

choco install elixir

для запуска скрипта установки Эликсира.

(Примечание: в настоящее время Chocolaty устанавливает версию 1.3.1. Если вам нужна самая последняя версия, вы можете загрузить установщик elixir для Windows с сайта elixir-lang.org, чтобы получить версию 1.3.2.)

Что бы вы ни установили, перезапустите командную строку и введите

elixir -v

чтобы убедиться, что установка сработала. Я получаю Elixir версии 1.3.1 и Erlang / OTP 19, как и ожидалось.

Шаг 4. Установите средства сборки Microsoft C ++.

Одна из проблем при запуске Elixir в Windows - это поддержка NIF - библиотек, использующих собственные модули C из ОС. Разработчики Phoenix для Windows, которые когда-либо пытались использовать пакет Comeonin, сталкивались с этим. Но решение простое. Используйте пакет Microsoft Visual C ++ Build Tools.

(Имейте в виду, что если у вас уже установлена ​​последняя версия Visual Studio, скорее всего, у вас уже установлены инструменты сборки. Я не использую Visual Studio, поэтому в этом случае вам придется действовать самостоятельно.)

Для установки инструментов сборки, опять же, будет полезен Chocolaty. Откройте командную оболочку администратора и введите

choco install VisualCppBuildTools

(или используйте обычный установщик от Microsoft.) Это установит инструменты, необходимые для компиляции модуля с NIF в Windows.

Чтобы подтвердить установку, загляните в

c:\program files (x86)\Microsoft Visual Studio 14.0\VC

Вы должны увидеть командный файл с именем «vcvarsall.bat». Если так, то все хорошо.

Шаг 5: Установите редактор Atom

Снова запустите командную оболочку администратора и введите

choco install atom

(или скачайте обычный установщик с Atom.io.)

Это установит редактор Atom и его менеджер пакетов apm.

К сожалению, установка Chocolaty не обновляет переменную среды path для Atom, поэтому мы должны добавить путь к Atom (и apm) в системную среду.

Откройте Панель управления, выберите Система и безопасность, а затем Система. Слева последний пункт в списке - Расширенные настройки системы. Щелкните по нему. Затем найдите переменные среды внизу. Открой это. В разделе «Системные переменные» дважды щелкните переменную «Путь» и выберите «Создать». Теперь добавьте путь к Atom. В моей системе это

C:\Users\<your user name>\AppData\Local\atom\bin

где ваше имя пользователя - это имя вашей учетной записи в Windows. После добавления пути перезапустите командную строку и введите

apm -v

чтобы подтвердить, что путь может быть найден. Получаю версию 1.10. Теперь вы можете открыть Atom из командной строки, а также использовать apm для установки пакетов.

Шаг 6. Установите Git для Windows

Раскрутите командную строку администратора и запустите

choco install git

(или воспользуйтесь обычным установщиком с сайта Git для Windows.)

Это установит git. Чтобы подтвердить установку, перезапустите оболочку и запустите

git --version

Я получаю 2.9.3.windows.1 для моей версии git.

Шаг 7: настройте Atom

Следующим шагом будет настройка нашего редактора для разработки Elixir / Phoenix. Вот тщательно подобранный список пакетов для установки в Atom, чтобы сделать разработку Elixir в Atom в Windows удовольствием. Первый список содержит основы, которые вам обязательно понадобятся.

Atom-elixir - для автозаполнения, перехода, документации и т. Д.
language-elixir - для подсветки синтаксиса

Ряд других пакетов делает работу с Elixir / Phoenix более удобной:

Феникс-эликсир-сниппеты
эликсир-cmd
линтер-эликсир-кредо

Несколько других пакетов, не относящихся к Elixir, но которые делают редактор Atom более полезным, включают следующее:

Autoclose-html
значки файлов
git-plus
git-time-machine
строка выделения
подсветка- выбранный
отступ-направляющий-улучшенный
миникарта
пигменты миникарты
platformio-ide-terminal

Мы вернемся к пакету Platformio-ide-terminal чуть позже. Все эти пакеты могут быть установлены в Atom через страницу настроек / установки или из командной строки с помощью apm - диспетчера пакетов Atom, например, «apm install language-elixir».

Шаг 8. Получите лучшую командную строку

Работа в стандартной командной строке Windows - не самое лучшее занятие. К счастью, есть несколько альтернатив, которые намного лучше. Я считаю, что мне больше всего нравится Cmder. Я опишу, как настроить Cmder.

Запустите командную строку в режиме администратора и введите команду

choco install cmder

(или загрузите установщик с сайта Cmder. Вы начинаете понимать, почему я рекомендовал Chocolaty?)

По завершении вы сможете запустить Cmder из меню «Пуск». Одна из приятных особенностей Cmder заключается в том, что он находит все подходящие оболочки в вашей системе, включая командную строку Windows (cmd.exe), Powershell и оболочку Git Bash. Все они могут быть запущены в собственной оболочке Cmder. Чтобы получить максимальную отдачу от Cmder, мы немного изменим настройки.

Прежде всего, давайте добавим Cmder в путь к среде. Chocolaty устанавливает Cmder в c: \ tools \ cmder. Итак, давайте добавим этот путь в системную среду. Следуйте инструкциям выше, но на этот раз добавьте:

c:\tools\cmder

как новую запись в вашем системном пути. Теперь мы можем запустить Cmder и из командной строки.

Далее запускаем Cmder и открываем настройки. Вот как мне нравится настраивать Cmder, чтобы сделать его использование действительно простым и быстрым. Это мои предпочтения; они могут тебе не нравиться, но я думаю, что они классные.

Перейдите в настройку «Внешний вид» и установите флажок «Стиль Quake». Пока вы там, также отметьте автоматическое закрытие при потере фокуса. Запустите Cmder, и теперь он появится в виде слайда вниз из верхней части экрана. Переключите его с помощью ctl-`(это, кстати, обратная кавычка)

Если установлено автоматическое закрытие, он откатывается, как только теряет фокус. Действительно удобно. Теперь Cmder будет открывать Quake-style при нажатии комбинации клавиш ctl-`. Попробуйте сами. Также обратите внимание, что сочетание клавиш работает из Atom, поэтому вы можете нажать ctl-`в Atom, и консоль скользит вниз по Atom.

Шаг 9. Настройте среду сборки

Как упоминалось выше, пакеты Elixir, использующие NIF, требуют наличия компилятора в вашей системе. Вы уже установили его, но давайте упростим его использование.

Как бы то ни было, каждый раз, когда вы хотите скомпилировать модуль, для которого требуется компилятор Microsoft C, вам нужно будет делать это в оболочке, в которой инициализированы правильные переменные среды для вашей платформы. Вот что такое vcvarsall.bat. Но каждый раз, когда вы компилируете модуль с NIF, находить и загружать этот файл очень сложно.

Давайте сделаем это проще. В командной строке Cmder перейдите к папке, которая существует на вашем пути (я просто использую «c: \ tools \ cmder», поскольку я уже добавил этот путь, но мне немного лень). В этой папке создайте новый командный файл - я называю свой dev.bat, поскольку он короткий и подходящий. Откройте файл dev.bat в Atom из командной строки Cmder, введя:

atom dev.bat

В этом файле поместите следующую команду:

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" AMD64

Обратите внимание, что путь к vcvarsall.bat должен быть заключен в кавычки из-за пробелов в пути к файлу. Моя система x64, поэтому мы отправляем опцию «AMD64» (в 32-битной ОС вы можете пропустить необязательную команду, так как по умолчанию используется «x86»).

Сохраните dev.bat. Теперь, когда вам нужно скомпилировать модуль с помощью NIF, вы можете запустить Cmder, а затем просто запустить «dev.bat», чтобы настроить правильную среду сборки.

Теперь у вас не должно возникнуть проблем с компиляцией собственных модулей. Но мы скоро это проверим.

Пришло время для замечательных дополнений.

Шаг 10. Включите цвета ANSI

Откройте Atom, создайте новый файл с именем «.iex.exs» и сохраните его в

c:\users\<your user name>

Затем добавьте это в файл:

Application.put_env(:elixir, :ansi_enabled, true)
IEx.configure(
  colors: [enabled: true, eval_result: [ :cyan, :bright ] ],
  default_prompt: [
    "\e[G",    # ANSI CHA, move cursor to column 1
    :blue,
    "%prefix", # IEx prompt variable
    ">",       # plain string
    :reset
  ] |> IO.ANSI.format |> IO.chardata_to_string
)

Это делает две вещи. Во-первых, он включает цвета ANSI в вашей оболочке для вывода Elixir, но только после того, как будет введена первая команда (спасибо OvermindDL1 на Elixirforum за то, что это уловил). Во-вторых, параметр eval_result добавляет цвет к выводу из теста смешивания. Не забудьте включить цвета при запуске ExUnit в своем тестовом скрипте:

ExUnit.start(colors: [enabled: true])

Шаг 11: Запустите терминал в самом атоме

Ранее я рекомендовал вам установить Platformio-ide-terminal. Вот почему. Это позволяет запускать терминал прямо в редакторе Atom. По умолчанию он использует Powershell, но вы можете указать ему запускать любой терминал, который вам нужен. Мы изменим это, чтобы использовать обычную командную строку.

(Почему именно командная строка? На данный момент это обходной путь. С vcvarsall.bat, похоже, работает только обычная командная строка (cmd.exe). Мне не удалось скомпилировать NIF из Powershell даже после запуска vcvarsall.bat. Может быть, кто-то еще может ответить почему.)

Перейдите к настройке пакета терминала в Atom, нажмите «Пакеты» и введите «терминал» в поле поиска. Найдите Platformio-ide-terminal и нажмите его кнопку «Настройки».

Во-первых, мы не хотим заменять Powershell по умолчанию на командную строку. В поле Shell Override поместите

C:\windows\system32\cmd.exe

Затем перейдите в поле Auto Run Command. Входить:

dev.bat

Теперь, когда вы запускаете терминал в Atom, он запускает командную строку, а затем ваш командный файл dev.bat и автоматически настраивает среду сборки, если для вашей операции компиляции требуется NIF. Потрясающие! Теперь у тебя есть выбор. Используйте терминал в Atom или используйте Cmder - всего одним нажатием клавиши.

Шаг 12. Убедитесь, что мы можем скомпилировать

Давай убедимся, что сможем скомпилировать. Запустите Cmder (или просто нажмите ctl-`, если он уже запущен). Создайте новую папку для размещения проекта тестового микса. В этой папке введите:

mix new sample

Как только смешивание будет готово, введите:

atom sample

Atom откроет папку, содержащую ваш новый проект. Затем откройте mix.exs и добавьте зависимость Comeonin:

defp deps do
  [ { :comeonin, "~> 2.5" } ]
end

Сохраните файл и раскрутите свой терминал (снова ctl-`) или откройте терминал в самом Atom.

Перейдите в папку своего проекта («cd sample») и вставьте зависимость:

mix deps.get

Затем настройте среду сборки:

dev.bat

Конечно, если вы используете терминал внутри Atom, файл dev.bat уже был запущен для вас. И давайте скомпилируем:

mix compile

Все должно было работать, и теперь у вас есть Comeonin NIF, скомпилированный и работающий.

Шаг 13: линтинг

Я люблю линтинг на лету. Итак, мы собираемся установить линтер Credo для Атома.

Credo - это инструмент статического анализа кода, помогающий создавать чистый и согласованный код. Мне нравится этот инструмент, но вам может не понравиться, поэтому этот шаг не является обязательным. Если она вам нравится, вот как ее включить.

Во-первых, Credo - это инструмент-эликсир. Чтобы установить Credo для использования в нашем примере проекта, снова откройте mix.exs в Atom. Добавьте зависимость для Credo:

defp deps do
  [ 
    { :comeonin, "~> 2.5" },
    { :credo, "~> 0.4", only: [:dev, :test] }
  ]
end

Теперь вставьте модуль кредо:

mix deps.get

Теперь в любой момент вы можете запустить

mix credo

для анализа вашего кода. Если вы выберете, вы также можете стать строгим:

mix credo --strict

Это создает более длинный список ошибок и / или проблем стиля в вашем коде, организованный по категориям. Это отличный инструмент, но Atom делает его еще лучше.

Если вы еще этого не сделали, используйте Atom Settings \ Packages или apm, чтобы установить пакет linter-elixir-credo для atom:

apm install linter-elixir-credo

После установки, когда вы открываете папку проекта с mix.exs, которая включает Credo в качестве зависимости, вы получаете оперативную линковку вашего кода. Чтобы проверить это, создайте новый файл Elixir в нашем примере проекта. После открытия добавьте в файл следующее:

defmodule TestCredo do
 
end

Вы быстро увидите, что elixir-credo проанализировал ваш код, и Atom разместил предложения по исправлению в нижней части окна с выделением строк с кодом, которые нарушают руководство по стилю Credo.

Ну вот и все. После того, как вы все это настроите, программирование Elixir и Phoenix в Windows станет удовольствием.