У меня были проблемы с тем, чтобы сделать что-то подобное с драгоценными камнями Ruby, поэтому я поделюсь тем, что сработало для меня, в надежде, что это поможет кому-то в будущем.
Шаг 1. Установите Gems
Начните с установки драгоценных камней, которые вы хотите использовать, в папку, которую вы легко можете найти, например, в папку gems
внутри папки вашего проекта.Как показал Стэн в своем ответе, используйте опцию -i
и укажите путь к папке с драгоценными камнями при установке гема.
gem install -i /path/to/gem/folder gemName
Шаг 2. Добавьте этап сборки Copy Files
Добавьте фазу сборки «Копировать файлы» к цели приложения, выбрав «Редактор»> «Добавить фазу сборки»> «Добавить фазу сборки файлов копирования».Используйте меню Ресурсы, чтобы выбрать место для копирования драгоценных камней в комплекте приложений.Если вы хотите, чтобы драгоценные камни находились в их собственной папке, добавьте имя папки в текстовое поле Subpath.
Нажмите кнопку Добавить, чтобы добавить файлы.Лист открывается.Нажмите кнопку Добавить другое.Перейдите к местоположению вашей папки с драгоценными камнями и выберите вашу папку с драгоценными камнями.Теперь, когда вы создаете проект, XCode скопирует драгоценные камни в комплект приложения.
Шаг 3: Найдите папку с драгоценными камнями в комплекте приложения
Используйте класс Bundle
, чтобы найти стандартные местоположенияв комплекте, например, в папке «Ресурсы».Постройте путь к папке с драгоценными камнями.Он понадобится вам как переменная среды при запуске гема.
В папке, содержащей гемы, должна быть папка bin
, содержащая исполняемые файлы.Вы должны построить путь к исполняемому файлу и использовать этот путь в качестве первого аргумента при запуске гема.
Шаг 4: Сконфигурируйте команду для запуска гема
Используйте класс Process
, ранее NSTask
, для запуска программы командной строки, такой как gem.Начните с создания Process
объекта.
let taskToRun = Process()
Установите путь запуска по пути к интерпретатору Ruby.
taskToRun.launchPath = "/usr/bin/ruby"
Установите переменную среды GEM_HOME на путь ваших драгоценных камнейпапка.
taskToRun.environment = ["GEM_HOME" : gemsPath]
Установите свойство arguments
со списком аргументов.Первым аргументом должен быть путь к исполняемому файлу драгоценного камня.
let argumentList = [gemExecutablePath, inputURL.path, "-o", outputURL.path]
taskToRun.arguments = argumentList
Фактический список аргументов зависит от используемого вами драгоценного камня.
Шаг 5: Запустите драгоценный камень
В macOS 10.13 и более поздних версиях вызовите функцию run
для запуска гема.
do {
try taskToRun.run()
} catch {
fatalError("Error running command line tool.")
}
В более ранних версиях macOS вызовите функцию launch
для запуска гема.
taskToRun.launch()
Более подробную информацию можно найти в следующей статье:
Использование Ruby Gem в приложении Mac