Как связать гем AsciiDoctor в приложении Какао - PullRequest
0 голосов
/ 12 февраля 2019

Мое приложение

У меня есть приложение Mac, которое использует AsciiDoctor для создания файлов PDF и ePUB.Я использую класс Process (ранее NSTask) для запуска команд AsciiDoctor.

Что я хочу

Я хочу, чтобы люди могли использовать мое приложениебез необходимости вручную устанавливать драгоценные камни AsciiDoctor Ruby из Терминала.

Копирование драгоценных камней в комплект приложения

Моей первой попыткой было установить драгоценные камни AsciiDoctor в пользовательскомпапку на моем Mac и добавьте фазу сборки Copy Files в мой проект Xcode, чтобы скопировать папку с драгоценными камнями в комплект приложения.Добавление гемов в комплект приложений работало на моей машине, но не работало на других машинах.Я не мог создавать файлы PDF или EPUB в системах с другой версией Ruby, чем версия на моем Mac, которую я использовал для установки гемов.На виртуальной машине macOS 10.13 мне удалось создать файл PDF, но не файл EPUB.

Установка гемов в папке поддержки приложений

Моя вторая попыткабыло установить драгоценные камни в папку поддержки приложений моего приложения при первом запуске приложения.Но это даже не сработало на моей машине.Когда я использовал путь запуска usr/bin/ruby для процесса командной строки и следующий список аргументов:

let argumentList = ["gem", "install", "-i", gemFolder.path, gem, "--pre"]

Где переменная gemFolder.path - это путь к папке поддержки приложений и переменная gemлибо "asciidoctor-pdf", либо "asciidoctor-epub3".

Я получил следующее сообщение об ошибке из-за стандартной ошибки при запуске процесса командной строки:

/ usr / bin / ruby: Неттакой файл или каталог - gem (LoadError)

Когда я использовал путь запуска gem или gem install, вызов метода Process run вызвал исключение.Вот сообщения об ошибках, которые выдало исключение.

Error Domain = NSCocoaErrorDomain Code = 4 "Файл" gem "не существует."UserInfo = {NSFilePath = gem}

Ошибка домена = NSCocoaErrorDomain Code = 4 "Файл" gem install "не существует."UserInfo = {NSFilePath = gem install}

Вопрос

Как включить гем AsciiDoctor в мое приложение, чтобы людям не приходилось устанавливать вручнуюдрагоценные камни?Нужно ли создавать установщик для приложения?

...