2015-09-26 4 views
4

У меня есть следующий автогенерированный контроллер в коленчатые/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 в V2::MainController слишком короткое, и я должен переименовать класс.

Я смущен, потому что думал, что 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. любого имени, заканчивающихся с номером

В вашем предупреждении дела было вызвано с 2 в V2. Даже для Version2 было бы одинаково.

Но это на самом деле только рекомендация. Ruby отлично работает с этим кодом.

1

Нет, это просто уведомление для вас как программиста. Короткие имена переменных обычно являются загадочными и менее навязчивыми, поэтому это хорошая проверка, но она определенно не является обязательной.

Я думаю, что V2 отлично подходит для вашего дела, , но если вы все еще обеспокоены, просто переименуйте его в Version2, чтобы сделать Rubymine счастливым. Я не знаю, будет ли он по-прежнему совместим с используемым вами драгоценным камнем. кажется, что Rubymine не нравится any variable with a number on the end.

Но почему IDE показывает уведомление только для MainController?

я могу думать о 2 варианта здесь:

  1. Это какой-то глюк в RubyMine индексации. Или, возможно, это было сделано так, чтобы не спамить ваше дерево файлов красными подчеркиваниями (на самом деле этого достаточно, чтобы вы это заметили). Попробуйте перезапустить среду IDE и посмотреть, не исчезнет ли она.
  2. RubyMine не может найти определение модуля V2, поскольку V2 в class V2::MainController является ссылкой на определенный модуль где-то, а не на его определение. Решение: создайте пустой модуль и посмотрите, не исчезло ли ваше предупреждение.

приложение/контроллеры/v2.rb

module V2 
end 
+0

Но почему IDE показывает уведомление только для MainController? –

+0

'Version2' по-прежнему« плохо »для RubyMine. – dimakura

 Смежные вопросы

  • Нет связанных вопросов^_^