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

Use non-system ruby to execute ruby scripts within macOS App

我正在构建一个 macOS 应用程序,它需要执行一个用 ruby 编写的框架。目前使用 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 的符号 link 更新为不同的二进制文件。

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

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=""
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

希望你有解决办法。

由于 我能够解决问题。 现在我在项目功能中停用了 macOS 沙盒。

现在我可以使用任何我想要的ruby。

谢谢