【发布时间】:2018-01-26 14:46:50
【问题描述】:
我正在构建一个 macOS 应用程序,它需要执行一个用 ruby 编写的框架。目前使用 macOS High Sierra 10.13.x 系统 ruby 版本仅为 2.3.3。我正在使用 brew / rvm (取决于)安装最新版本。
当尝试使用Process 运行/usr/local/bin/ruby 或~/.rvm/rubies/ruby-2.5.0/bin/ruby 时,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
希望你有解决办法。
【问题讨论】:
-
“/usr/local/bin/ruby”是你拥有读取和执行权限的可执行文件吗?你可以在终端中执行
/usr/local/bin/ruby my_ruby_script.rb吗? -
是的。
-
沙盒激活了吗?
-
太棒了!是的,这就是问题所在。谢谢你。在开发过程中我会停用它,稍后我会寻找合适的解决方案。
标签: ruby swift xcode macos nstask