使用非系统 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/ruby
与 Process
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。
谢谢
我正在构建一个 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/ruby
与 Process
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
希望你有解决办法。
由于
现在我可以使用任何我想要的ruby。
谢谢