2015-09-26 59 views
4

我在 conrollers/v2/base_controller.rb中有以下自动生成控制器。类名称中的双冒号和RubyMine关于短名称的投诉

class V2::BaseController < ApplicationController 
end 

它是由Versionist gem生成的。我试图让一个控制器从V2::BaseController继承。我写了

class V2::MainController < V2::BaseController 
    def index 
    render :text => 'abcde' 
    end 
end 

它工作正常,我可以看到我的文本呈现在浏览器中。但是,RubyMine IDE抱怨V2::MainController中的类名称V2太短,我应该重命名该类。

我很困惑,因为我认为V2::意味着我们在V2模块中定义了一个新类。如果我错了,那么为什么RubyMine会忽略与BaseController相同的问题?

UPD:RubyMine的投诉

RubyMine complaint

+0

发生了什么地方你定义'V2'?这是Rails的具体? – sawa

+0

@sawa我还没有定义它。 http://pastebin.com/F0Js7ue9 - V2的搜索结果(从ack-grep输出中省略的日志) –

+0

@sawa我用截图更新了我的问题。 –

回答

4

的RubyMine使用reek代码气味检测。

警告它给你叫做Uncommunicative Module Name

沉默寡言的模块名称检查:

  1. 1个字符的名称
  2. 任何名称以数字

结束你的情况,预警与2V2引起的。即使对于Version2也是如此。

但它实际上只是一个建议。 Ruby在这段代码中工作正常。

1

不,它只是一个作为一个程序员,你通知。简短的变量名通常是神秘的,意图不那么明显,所以这是一个很好的检查,但绝对不是必需的。

我认为V2对你的情况来说非常好,但是如果你仍然担心,只需将它重命名为Version2就可以使卢西姬开心。我不知道它是否会与您使用的宝石兼容。似乎鲁米姬不喜欢any variable with a number on the end

但为什么IDE只显示MainController的通知?

我能想到这里大约2个选择:

  1. 它在RubyMine的索引一些小故障。或者,也许这样做并不是用红色下划线来垃圾文件树(其实你已经足够注意到了)。尝试重新启动IDE并查看它是否消失。
  2. RubyMine找不到V2模块的定义,因为V2class V2::MainController是某个定义模块的引用,而不是它的定义。解决方案:创建空模块并查看警告是否消失。

应用程序/控制器/ v2.rb

module V2 
end 
+0

但为什么IDE只显示MainController的通知? –

+0

对于RubyMine,'Version2'仍然是“坏”的。 – dimakura