使用非系统ruby在macOS App中执行ruby脚本

时间:2018-01-26 14:46:51

标签: ruby swift xcode macos nstask

我正在构建一个需要执行用ruby编写的框架的macOS应用程序。目前使用macOS High Sierra 10.13.x,系统ruby版本仅为2.3.3。我使用brew / rvm(取决于)来安装最新版本。

尝试使用/usr/local/bin/ruby运行~/.rvm/rubies/ruby-2.5.0/bin/rubyProcess时,Xcode会引发错误Operation is not permitted

/usr/bin/ruby用作launchPath时,此方法可以正常使用。

有没有办法从/usr/local/bin/ruby~/.rvm/rubies/ruby-2.5.0/bin/ruby或任何其他自定义路径执行ruby?

使用当前版本的macOS,也无法将/usr/bin/ruby的符号链接更新为其他二进制文件。

到目前为止,这是我的实现:

let myScript = Bundle.main.path(forResource: "myScript", ofType: "command")

let task = Process()    
task.launchPath = "/bin/sh"
task.arguments = myScript, basePath
taks.launch()

这里是myScript内容:

#!/bin/sh -l

BASE_PATH="$1"
cd "${BASE_PATH}"

/usr/local/bin/ruby my_ruby_script.rb

当我启动任务时,我收到了这条消息:

 /usr/local/bin/ruby: Operation not permitted

~/.rvm/rubies/ruby-2.5.0/bin/ruby: Operation not permitted

希望你有一个解决方案。

1 个答案:

答案 0 :(得分:0)

由于Martin R's help我能够解决问题。 目前我在项目功能中停用了macOS沙盒。

现在我可以使用我想要的任何红宝石。

谢谢