2015-09-11 2 views
0

Я хотел бы написать приложение OS X, которое может выполнить некоторый код, который очень просто писать в ruby, и что я предпочитаю не переносить в swift. Возможно ли включить какие-то рубиновые скрипты в приложение OS X, а затем вызвать и получить данные из этого скрипта, обменивающегося информацией с моим быстрым кодом? Например, я могу написать функцию «return_random» в Ruby и вызвать ее из быстрого получения результата, который исходит от этой функции?Запустить рубиновый скрипт из OS X Application

Я знаю ... это звучит очень сложно, но это было бы очень полезно!

Благодаря

ответ

0

Взгляните на http://www.rubymotion.com, кажется, что это то, что вам нужно:

RubyMotion позволяет быстро разрабатывать кроссплатформенные родные приложения для IOS, Android и OS X, все с использованием ваш любимый редактор и потрясающий язык Ruby, который вы знаете и любите.

1

Вы можете использовать NSUserUnixTask (url: NSURL) для выполнения сценария. Вы можете подавать стандартный ввод и читать стандартный вывод, создавая NSPipe() для каждого и прикрепляя их к задаче.

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

Вот краткий пример:

 let script = try NSUserUnixTask(URL: url) 
     let inpipe = NSPipe() 
     let outpipe = NSPipe() 
     script.standardInput = inpipe.fileHandleForReading 
     script.standardOutput = outpipe.fileHandleForWriting 
     script.executeWithArguments(nil, completionHandler: nil) 
     inpipe.fileHandleForWriting.writeData(inputData) 
     script.standardInput?.closeFile() 
     inpipe.fileHandleForWriting.closeFile() 
     let out = outpipe.fileHandleForReading.readDataToEndOfFile() 
     script.standardOutput?.closeFile() 
     outpipe.fileHandleForReading.closeFile() 
     return String(data: out, encoding: NSUTF8StringEncoding)