与我熟悉的C#开发中的代码完成相比,我发现RubyMine提供的代码完成令人惊讶地不完整。
ActionMailer这样的类会神奇地生成像"deliver_*“方法这样的方法(参见这个示例 ).由于我没有在代码完成中看到它们,我怎么知道它们的存在?
(不幸的是,目前我也收到了一个错误,deliver_contact方法不存在.由于我完全复制了这个例子,我现在问自己,这个特性是否仍然存在8[ )他们有办法解决这些问题吗?
发布于 2011-10-22 18:55:30
这并不是说Ruby没有被“设计”用于代码完成,而是行为可以以多种方式添加,包括在程序执行期间。这使得代码完成变得困难。当一个对象的类型已知时,RubyMine做得很好,但只对明显的或已知的功能。
http://apidock.com为Rails和RSpec提供了参考资料。在irb/撬动中玩会有很大帮助。可以通过REPL中的foo.methods来获取类/实例上的方法(尽管我几乎总是foo.methods.sort)。
如果你“有点”知道你在用find/grep寻找什么,那么这个列表可以被过滤。
> "foo".class.instance_methods(false).sort.grep /each/
=> [:each_byte, :each_char, :each_codepoint, :each_line]在Rails环境中,运行rails console (我更喜欢对控制台使用pry,YMMV)允许您访问环境,包括公开许多动态方法。请注意,有些方法直到第一次被调用(尤其是find_by_foo_and_bar品种的方法)才存在,因此某些功能可能仍然隐藏。
发布于 2011-10-22 18:48:03
出现这些问题的主要原因是,Ruby(onRails)从未被设计用于代码完成。大多数Rubyist代码都在文本编辑器中,并且非常高兴它们不需要代码完成。
在当前版本的Rails中,deliver_*方法被废弃,而倾向于MyClass.contact.deliver样式。
发布于 2011-10-22 18:53:39
https://stackoverflow.com/questions/7861805
复制相似问题