首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RubyMine中的RubyMine代码完成问题

RubyMine中的RubyMine代码完成问题
EN

Stack Overflow用户
提问于 2011-10-22 18:43:09
回答 3查看 2.5K关注 0票数 0

与我熟悉的C#开发中的代码完成相比,我发现RubyMine提供的代码完成令人惊讶地不完整。

  1. 当我用一些方法编写一个类时,我想从另一个类调用它们, 为什么我会得到一个代码完成列表,它是“一英里”长,但没有相关的方法-建议? (或者这是我的RubyMine中的一个bug/特性?!)
  2. ActionMailer这样的类会神奇地生成像"deliver_*“方法这样的方法(参见这个示例 ).由于我没有在代码完成中看到它们,我怎么知道它们的存在? (不幸的是,目前我也收到了一个错误,deliver_contact方法不存在.由于我完全复制了这个例子,我现在问自己,这个特性是否仍然存在8[ )

他们有办法解决这些问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-22 18:55:30

这并不是说Ruby没有被“设计”用于代码完成,而是行为可以以多种方式添加,包括在程序执行期间。这使得代码完成变得困难。当一个对象的类型已知时,RubyMine做得很好,但只对明显的或已知的功能。

http://apidock.com为Rails和RSpec提供了参考资料。在irb/撬动中玩会有很大帮助。可以通过REPL中的foo.methods来获取类/实例上的方法(尽管我几乎总是foo.methods.sort)。

如果你“有点”知道你在用find/grep寻找什么,那么这个列表可以被过滤。

代码语言:javascript
复制
> "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品种的方法)才存在,因此某些功能可能仍然隐藏。

票数 5
EN

Stack Overflow用户

发布于 2011-10-22 18:48:03

出现这些问题的主要原因是,Ruby(onRails)从未被设计用于代码完成。大多数Rubyist代码都在文本编辑器中,并且非常高兴它们不需要代码完成。

在当前版本的Rails中,deliver_*方法被废弃,而倾向于MyClass.contact.deliver样式。

票数 0
EN

Stack Overflow用户

发布于 2011-10-22 18:53:39

所有遵循以下结构的方法: deliver_*使用元编程思想。

下面是一个非常简单的例子:方法与def

您会发现rails中的很多东西都与缺少的方法和元编程哲学有关。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7861805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档