如何将ruby包捆绑到[Objective-C]可可应用程序中?

前端之家收集整理的这篇文章主要介绍了如何将ruby包捆绑到[Objective-C]可可应用程序中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图找出如何将用 Ruby( Sass)编写的包捆绑到Cocoa应用程序(Objective-C,而不是Ruby Cocoa)中以供我执行(通过NSTask很好,除非有一个简单的方法桥ObjC< - > Cocoa,我不知道).

Sass包是你必须安装的东西,使用“gem install”或“rake install” – 这样做会在我的〜/ .gem目录中放入大量文件.由于我希望安装了基于Cocoa的应用程序的任何人能够在我的应用程序中执行此工具,我不希望让用户经历一个额外的安装过程,所以我希望能够在我的应用包的Res​​ources目录中嵌入我需要的所有内容.

然而,不熟悉Ruby的内部和结构(对不起,我只是把ObjC/C++ocoa保留在我的脑海里!),我不清楚在〜/中安装了1,444个文件中的哪一个.gem目录(是的,我算了)我需要嵌入应用程序以及我可能需要做什么来获取目录引用等工作正常.

如果有人有任何将ruby工具嵌入Cocoa应用程序的经验,我将非常感谢您的意见.考虑到Mac OS X上安装了ruby,我并没有想到会这么难……但显然这个软件包(通常是非典型的?)不仅仅是一个脚本文件….

解决方法

您可以将gem安装到特定位置:
GEM_HOME=path/to/your/project/gems gem install sass

然后,作为构建过程的一部分,将文件夹复制到资源中.当你想运行sass时,找到你的gem文件夹.像这样调用ruby:

NSString *gems_path = …;
NSTask *task = [[NSTask alloc] init];
// you may want to copy NSProcessInfo.processInfo.environment and modify it instead
task.environment = @{ @"GEM_HOME": gems_path };
task.launchPath = @"/usr/bin/ruby";
task.arguments = @[[gems_path stringByAppendingPaths:@[@"bin",@"sass"]],@"rest",@"of",@"your",@"arguments"];
// add handling for I/O
[task launch];

(键入github,可能有愚蠢的错误)

请注意,您可能还想捆绑ruby(可能是macruby),以防止出现兼容性问题.如果没有,请确保测试您支持的所有OS X版本,尤其是10.9,因为ruby已升级到2.0.

猜你在找的Ruby相关文章