bayerlin 2007-11-13 16:15
Ruby on Leopard(转)
Mac OS X Leopard:具备DTrace、XCode和Interface Builder支持的Ruby开发环境 作者 [b]Werner Schuster[/b]译者 [b]高昂[/b] 发布于 2007年11月1日 下午7时0分
来源:[url]http://www.infoq.com/cn/news/2007/11/ruby-leopard[/url]
社区[url=http://www.infoq.com/cn/ruby;jsessionid=8DF330F6D64DE0A6344791ACB8D74423]Ruby[/url]主题[url=http://www.infoq.com/cn/dynamic_languages;jsessionid=8DF330F6D64DE0A6344791ACB8D74423]动态语言[/url] 经历漫长的等待之后,[b]Mac OS X Leopard[/b]操作系统终于发布,并在其中提供了对于[b]Ruby[/b]编程开发的广泛支持。在Wiki站点MacOSForge.org之上列出了Leopard系统中新提供的Ruby特性。
[indent] Ruby环境已升级到1.8.6p36版本,这是我们可以获取的最新Ruby稳定版。此外我们又针对部分重要改进,将p36版本之后发现的重要Bug的补丁包也纳入进来。但这些在当时并不属于Ruby的官方补丁发布版中的一部分(这些补丁在后来已经包含进了官方补丁发布版,但是已经超出了我们系统发布的截止日期)。
[……]
包含程序解释器内核的Rubylibruby.1.dylib类库,以四种形式的二进制代码发布,支持ppc,i386,ppc64以及x86_64四种体系结构。因此开发者可以在64位的应用程序中加入Ruby代码。所有的C语言扩展对于32位和64位体系架构均可用,只有Tk脚本不能在64位的环境下使用。因此,Ruby解释器的加载路径/usr/bin/ruby仍然保持为32位的形式,使得脚本可以使用Tk扩展,或其他依赖于32位运行的机制。
在默认情况下,Ruby的C语言扩展可以面向ppc和i386两种目标平台发布。如果在链接到非通用类库(比如mysql.com为每个处理器架构定制的二进制文件)的情况下,开发者可以设定ARCHFLAGS环境变量来配置扩展的编译。 [/indent]除了上述内容之外,Ruby解释器的另一个有趣拓展是对于静态探针的支持。动态跟踪[b]DTrace[/b]技术原先是由Sun公司为Solaris开发的,但是目前已经被移植到其他的Unix平台之上。DTrace允许开发者对应用程序甚至操作系统的代码进行[b]低开销的跟踪[/b]和[b]概览[/b]。Mac OS X的[url=https://dtrace.joyent.com/projects/ruby-dtrace/wiki/Ruby+DTrace]Ruby解释器包含下面这些探针[/url]:
[indent]探针目前Ruby-DTrace之中所包含的探针
[table] [tr] 探针名称 描述 [/tr] [tr] [td]function-entry[/td] [td]当Ruby方法调用时被激活[/td] [/tr] [tr] [td]function-return[/td] [td]当Ruby方法返回时激活[/td] [/tr] [tr] [td]raise[/td] [td]当Ruby代码抛出异常时激活[/td] [/tr] [tr] [td]rescue[/td] [td]当Ruby代码异常得到处理时激活[/td] [/tr] [tr] [td]line[/td] [td]每一行Ruby代码执行时激活[/td] [/tr] [tr] [td]gc-begin[/td] [td]在垃圾回收周期开始时激活[/td] [/tr] [tr] [td]gc-end[/td] [td]在垃圾回收周期完成之后激活[/td] [/tr] [tr] [td]object-create-start[/td] [td]在Ruby对象被分配之前激活[/td] [/tr] [tr] [td]object-create-done[/td] [td]在Ruby对象完成分配之后激活[/td] [/tr] [tr] [td]object-free[/td] [td]在每次Ruby对象释放之后激活[/td] [/tr] [tr] [td]ruby-probe[/td] [td]可以在Ruby代码中调用的探针(请关注下文)[/td] [/tr] [/table][/indent]这些是从[url=https://dtrace.joyent.com/projects/ruby-dtrace/wiki/Ruby+DTrace]Joyents Ruby DTrace项目[/url]之中引入。Mac OS X Leopard同样也包含被称作[url=http://www.apple.com/macosx/developertools/instruments.html]Instrument[/url]的工具,用来将跟踪和分析进行可视化展示。
苹果公司同样也为[url=http://www.apple.com/macosx/developertools/xcode.html][b]XCode[/b][/url]以及GUI设计器[url=http://developer.apple.com/tools/interfacebuilder.html][b]Interface Builder[/b][/url]提供了Ruby语言的支持:
[indent] 在Leopard之中,Xcode与RubyCocoa项目模板一同出现,但同时也具备一个模板来生成Test/Unit目标。在BridgeSupport机制的帮助之下,Xcode为Ruby语言提供了更好的代码补全支持。
InterfaceBuilder目前对Ruby语言提供了官方支持。比方说,开发者可以在Xcode中编写Ruby的类,通过outlets或者actions,所有要素都会自动出现在Interface Builder之中。InterfaceBuilder使用RubyCocoa的rb_nibtool工具来同步元数据。在另一方面,你可以在InterfaceBuilder中手工定义outlets或actions,并拖拽到Xcode的Ruby文件中,随后相应的Ruby代码就会被粘帖到其中。 [/indent]Mac OS X Leopard还包含有一个名为[url=http://www.apple.com/macosx/features/300.html#applescript]Scripting Bridge[/url]的崭新框架,这个框架允许使用脚本来编写应用,同时也支持Ruby语言:
[indent]ScriptingBridge是一个新的Leopard框架,为基于AppleScript实现的AppleEvent基础设施提供了访问途径。ScriptingBridge将会动态生成一个Objective-C语言接口,与指定程序的脚本化字典相对应。开发者可以通过Obective-C语言接口来发送消息并且控制应用程序。
多亏了RubyCocoa项目,使得通过Ruby语言使用ScriptingBridge成为可能。尽管某些脚本元素目前并不支持,比方说enumerations,但是大部分功能对于开发者来说都是可用的。 [/indent][b]查看英文原文:[/b][url=http://www.infoq.com/news/2007/10/ruby-leopard;jsessionid=8DF330F6D64DE0A6344791ACB8D74423]Ruby on Mac OS X Leopard with DTrace, XCode and Interface Builder support[/url]
bayerlin 2007-11-13 16:15
大家看看这篇行不行
最近苹果很火,是不是我们也介绍一下呢?
maninred 2007-11-13 23:44
[quote]原帖由 [i]bayerlin[/i] 于 2007-11-13 16:15 发表 [url=http://ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=7714&ptid=2007][img]http://ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
最近苹果很火,是不是我们也介绍一下呢? [/quote]
一个苹果上万,看来两三年内都无望体会了。
maninred 2007-11-14 00:38
[quote]原帖由 [i]bayerlin[/i] 于 2007-11-13 16:15 发表 [url=http://ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=7714&ptid=2007][img]http://ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
最近苹果很火,是不是我们也介绍一下呢? [/quote]
一个苹果上万,看来两三年内都无望体会了。
DTrace技术其实不用苹果也可以用,那就是用NetBeans6进行Ruby开发,有个DTrace插件可以升级。。。
drive2me 2007-11-14 12:12
[quote]原帖由 [i]maninred[/i] 于 2007-11-14 00:38 发表 [url=http://ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=7759&ptid=2007][img]http://ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
一个苹果上万,看来两三年内都无望体会了。
DTrace技术其实不用苹果也可以用,那就是用NetBeans6进行Ruby开发,有个DTrace插件可以升级。。。 [/quote]
哈哈,12年前,苹果机全世界大耍卖时,大家都便宜去买。买回来后很多东西不兼容,后来好多人不喜欢了。但有一点,苹果系统的多媒体软件一直是世界领先的。
现在兼容性不应该是问题了吧。
yudi 2007-12-21 09:02
如果需要我可以写一篇leopard 设置 Ruby on Rails 指南
bayerlin 2007-12-22 01:20
回复 #7 yudi 的帖子
好啊,欢迎,leopard上开发ror,很多人关注呢。