RubyMine 2.5 EAP发布

星期五, 五月 7th, 2010

RubyMine 2.5 EAP发布啦,主要的一个特性就是支持Rails 3.0,当然Zen Coding的特性也添加进来啦。目前2.5 EAP还不支持Rails 3.0的全部特性,这个在完善中。我个人也试用了一下,RubyMine 2.7,Ruby 1.8.7,Rails 3.0 Beta3,完全没有问题,比较流畅。目前最好不要使用Ruby 1.9.x版本,主要是ruby-debug-ide这个gem和1.9有兼容问题,在RubyMine中无法搞定debug,我还是选择了1.8.7。

Block变量类型感知

星期四, 三月 11th, 2010

我们知道Ruby是弱类型语言,所以要实现变量类型的精准判别方便代码提示,我们就需要使用特定的annotation。如果要实现block变量的类型感知,进行代码提示,那有点困难的。不过IDEA提供一个扩展机制,你可以通过一个简单的脚本来设定block变量类型,从而达到代码提示的目的,如下图:
你会发现,file变量能够感知到它的类型为’RIO::Rio’,从而给给出该类的变量和函数提示,相当强大,你的效率也会高很多。 RubyMine的Extension机制可以让我们写代码更高效,主要是代码提示和导航,对不存在的一些函数和变量能够提示给你,减少不必要的错误。 个人在GitHub上建立了一个RubyMine的Extension库,将常见的一些gem形成RubyMine的extension,这我们在使用这些gem时就非常便捷了,欢迎访问: http://github.com/linux-china/rubymine_extensions

TeamCity Integrated with RubyMine

星期一, 十月 12th, 2009

TeamCity发布了最新EAP版本10455,开始支持RubyMine,这样在RubyMine中就可以使用plugin和TeamCity进行交互(TeamCity的IDEA插件同样适用于RubyMine),集成测试将更加方便,如notification,remote run等。TeamCity默认支持的是Ruby的Rake,关于TeamCity对Rake的支持,请访问: http://www.jetbrains.net/confluence/display/TW/Rake+Runner

Copy/paste files between RubyMine and Explorer

星期一, 十月 12th, 2009

在使用RubyMine的时候,我们经常在RubyMine和资源管理器之间拷贝/粘贴一些文件,毕竟Ruby的脚本文件比较多。在最新的RubyMine 1480版本中,添加了RubyMine和资源管理器之间的copy/paste功能,在RubyMine中,Ctrl+C某一文件,回到资源管理器中,Ctrl+V就可以将文件从RubyMine中copy到资源管理器中,同样可以从资源管理器向RubyMine粘贴文件,在资源管理器中Ctrl+C某一文件,然后在RubyMine中,选择某一目录或文件,然后Ctrl+V就可以将文件copy到RubyMine下的制定目录,非常便捷。

给Ruby变量添加类型标识

星期三, 九月 30th, 2009

Ruby是弱类型语言,所以IDE工具很难理解其是什么类型,所以给代码提示带来了问题。典型的一个语句: user = User.find_by_nick(‘linux_china’),如果find_by_nick不表明其返回的类型为User类,那么给user变量做属性提示基本不可能。如果你使用第三方gem,那么你不可能给函数添加返回类型,所以这个时候要给变量添加类型标识,这个时候变量就会知道它和那个类型进行关联,从而进行代码提示。所以我们在写Ruby代码时,适当的添加annotation将对代码的质量和写代码的便捷有很大的提高。
#:return:=>User def self.find_by_nick(nick) end
#:return:=>User user = find_user_by_email(‘xxx@xxx.com’)

RubyMine的动态API

星期二, 九月 29th, 2009

Ruby的Meta Programming能力非常强,如果你使用define_method的话,同时想让IDE还能进行代码提示,那么可能有点为难IDE啦。在最新的RubyMine版本中,添加了动态定义函数的方法,两个功能:设定动态函数名称;设定函数返回值。有了这两个特性,我们就很容易搞定一些代码提示。如下面代码,给Date添加了一个plus_week的函数,先定义动态函数,然后定义其返回值:
require ‘code_insight/code_insight_helper’
describe “Date” do set_dynamic_methods :methods => “plus_week” set_return_type “plus_week” => “Date” end
在RubyMine中的效果如下,代码提示就可以轻松搞定啦。

Annotation for return type in RubyMine

星期四, 八月 13th, 2009

在IDEA中,IDEA通过annotation机制让弱类型语言获取类型支持,如JSDoc,elvariable,这样Javascript和模板语言就知道其关联的数据类型,从而达到类型提示的母的。Ruby也是一种弱类型语言,最新的EAP版本引用NetBeans的一个return annoation,这样就可以让函数返回值有类型标识,return annotation的使用如下: #:return:=>Fixnum ,注意从:return开始后不要使用空格。

通过这种机制,我们就可以了解函数的返回类型,从而进行代码提示,代码校验等,非常简便。
Del.icio.us : RubyMine

RubyMine 1.5 EAP第一版

星期二, 七月 14th, 2009

RubyMine 1.5 EAP的第一个版本发布啦,功能非常不错,除了IDEA 9本身的一些新特性,如Color Files, Tab Switch等,RubyMine还添加Ruby相关的很多特性,如Ruby 1.9,Haml支持,Cucumber支持等等。有兴趣可以访问: http://www.jetbrains.net/confluence/display/RUBYDEV/RubyMine+1.5+EAP+(build+1265)+Release+Notes,相信后续的Open API也会开发,扩展RubyMine的功能也比较容易。