Caché Studio
Начнем с официальной IDE InterSystems. Caché Studio — это Windows приложение, поэтому для запуска ее под Linux потребуется Wine. Дистрибутив можно скачать здесь, пакет Client Components, 32 или 64 битный дистрибутив. Описание установки Wine здесь приводить не буду — его несложно найти в сети. После установки Wine устанавливаем Studio так же, как если бы мы это делали под Windows. Скажу честно, на CentOS 6.5 у меня установщик почему то не завелся, а вот на Ubuntu уже давно вполне успешно работает. Субъективные впечатления — есть проблемы с производительностью, а также не вполне адекватно работают веб-визарды студии для создания новых классов и для работы с шаблонами кода. Так что Studio под Wine очень удобным инструментом для разработки под Linux в Caché я бы не назвал.
NBStudio
Работая в таких популярных Java IDE как NetBeans, Eclipse, Intelliji IDEA, возникает соблазнительная мысль использовать некоторую их функциональность при разработке кода на Caché. Поэтому я решил попробовать создать альтернативу студии, включающую наиболее востребованные возможности современных IDE, которых нет в Caché Studio. Так я начал проект NBStudio — IDE для Caché на основе платформы NetBeans. Проект с открытыми исходниками, выложен на гитхабе. К сожалению коммиты не частые, но над проектом продолжаю работать. Свободного времени, которое могу потратить на проект не так много, потому очень рад буду любой помощи в виде пулл реквестов и любых предложений по развитию и дизайну, конечно же не откажусь и от материальной поддержки.
Первая цель проекта — повторить функциональность оригинальной студии.
На сегодня реализовано:
- Просмотр и редактирование кода классов и mac-рутин
- Подсветка кода и некоторых ошибок. Грамматика описана на ANTLR4, реализована не полностью. При подсветке кода и ошибок не все еще работает идеально.
- Диалоговое окно открытия файла, похожее на то что имеем в студии. Фильтры файлов, кнопки фильтров, выбор подключения.
- Возможность работы сразу с несколькими серверами, областями (в оригинальной студии возможно только одно одновременное подключение).
В планах:
- Работа с проектами: открыть, создать, управление содержимым проекта. (На данный момент в разработке).
- Создание новых классов, рутин и т.д. (На данный момент в разработке).
- Инспектор кода в классе.
- Поддержка других MUMPS систем.
- Поддержка разных версий. На данный момент поддерживается версия Caché 2013.1.
Шаги по установке NBStudio на Linux CentOS 6.5.
Скачать последний релиз NBStudio можно здесь. Для Linux берем nbstudio-linux.sh. Перед установкой NBStudio нужно установить Oracle JavaJDK 7, можно взять здесь. После установки Java запускаем установку NBStudio, установщик графический, как и у NetBeans, довольно простой — затруднений вызвать не должен.
Запускаем — если кликнуть на Connections, можно вызвать окно создания нового подключения.

После подключения появляется список классов и рутин.


Диалог открытия файлов, доступны фильтры, возможность отобразить системные классы/рутины, и сгенерерированные.

Диалог открытия проекта.

Просмотр открытого проекта.

Создание нового файла (пока в работе).

SublimeCache
Это проект Брэндона Хорста, выложен на гитхабе здесь. Как следует из названия, это SublimeText плагин для разработки с Caché. Для работы требуется установленная серверная часть в Caché не ниже 2014.1, которую можно взять здесь. Серверная часть представляет из себя REST приложение, осуществляющее доступ к необходимым функциям.
Доступные на данный момент возможности:
- Подключение к нескольким областям на разных инстансах.
- Загрузка и выгрузка кода классов и рутин.
- Возможность открыть класс в браузере, для (CSP/ZEN/SOAP).
- Импорт/Экспорт в формате XML.
- Выполнить SQL-запрос и увидеть результат прямо в Sublime.
Установка
Будем считать, что SublimeText 3 у вас уже установлен, если нет, взять его можно здесь. Необходимо так же, чтобы был установлен плагин PackageControl — про его установку, и где взять дистрибутив описано здесь.
Вручную
- Скачать файл плагина по ссылке.
- Меню Preferences > Browse Packages...
- Откроется папка, там подняться на уровень выше и войти в папку Installed Packages, в эту папку перенести скаченный файл плагина.
- Перезапустить Sublime Text
Простой способ
Открываем консоль Ctrl+` или меню View > Show ConsoleВ консоли вводим, текст:
import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
Все, после этого плагин Package Control готов к работе.
Установка плагина SublimeCache
- Добавить репозиторий: Ctrl+Shift+P > Add repository > github.com/brandonhorst/SublimeCache
- Установка плагина: Ctrl+Shift+P > Install Package > SublimeCache
Перед началом работы нужно установить серверную часть. Автор пишет в ограничениях серверной части, что работать будет только под Windows. Связано это видимо с тем, что под Linux еще не полностью работает %Compiler.UDL.TextServices.cls. А именно, из того что я заметил, не совсем корректна работа с блоками XData. И процесс установки, который предлагается самим автором не проходит полностью, так как он пользуется именно этим способом для установки кода.
Я загрузил весь код, экспортировал в XML и выложил здесь.
Установить его теперь можно одной строчкой.
zn "%SYS" s b=##class(SYS.Database).%OpenId($zu(12,"cachelib")),bk=b.ReadOnly,b.ReadOnly=0 d b.%Save() s s="Github_CDEV",sn="%CDEV.Server",u="/csp/sys/dev" d ##class(Security.SSLConfigs).Create(s),##class(Security.Applications).Copy("/csp/sys",u,"CDev REST Application"),##class(Security.Applications).Get(u,.p) s p("DispatchClass")=sn d ##class(Security.Applications).Modify(u,.p) s r=##class(%Net.HttpRequest).%New(),r.Server="gist.githubusercontent.com",r.Https=1,r.SSLConfiguration=s d r.Get("/daimor/11107056/raw/8b505a0b3172d1c0c9c9ad84cc4ab80e9714f9a8/%25CDEV.XML") d $system.OBJ.LoadStream(r.HttpResponse.Data,"c-d") s b.ReadOnly=bk d b.%Save() После выполнения кода, можно проверить его в работе, открыв API по ссылке http://localhost:57772/csp/sys/dev/, проверьте правильность порта сервера Caché в вашем случае.
Сервер должен дать такой ответ:
{"namespaces":"/csp/sys/dev/namespaces","version":"v0.0.3"}
Теперь можно настроить плагин: Ctrl+Shift+P > Cache: Server Configuration Server. Должно быть примерно такое содержимое:
{ "current-server": "cache", "servers": { "cache": { "host": "127.0.0.1", "password": "SYS", "username": "_SYSTEM", "web_server_port": "57772" } } }
После сохранения настроек, можно выбрать подключение (Ctrl+Shift+P > Cache: Change Server) и рабочую область (Ctrl+Shif+P > Cache: Change Namespace).
Загрузка файла: Ctrl+Shift+P > Cache: Download File. Может занять некоторое время, пока Sublime загрузит весь список.
У меня сначала возникли проблемы с подсветкой синтаксиса.
/.config/sublime-text-3/Packages/InterSystems Cache/CacheColors
в нее скачать содержимое репозитория github.com/seanklingensmith
перезапустить Sublime Text

Ctrl+Shift+P > Cache: Export File To XML. Показывает открытый файл в формате XML.

Можно поменять текст файла и загрузить обратно на сервер: Ctrl+Shift+P > Cache Upload and Compile File.
Так же можно просмотреть и сгенерированный код (другой код): Ctrl+Shift+P > Cache: Open Generated Files

В общем, вполне себе хорошая альтернатива. Понятно, что решение еще требует доработки, но уже вполне работоспособный инструмент.
На этом все проекты IDE Caché под Linux, о которых я знаю. Если вы знаете какие-то еще, будет любопытно увидеть в комментариях.
