Ошибка Rubocop: используйте attr_reader для определения тривиальных методов чтения.

У меня проблемы с использованием rubocop, и я не знаю, как решить эту проблему.

Код у меня есть:

class Test
  @hello = 'stackoverflow'

  def self.hello
    @hello
  end
end

p Test.hello

Он работает так, как я хочу, но когда я запускаю rubocop, он говорит использовать attr_reader. Если я попытаюсь использовать attr_reader, он выдаст NoMethodError.

Я уже пытался решить это так, но рубокоп все равно не радует.

class Test2
  @hello = 'stackoverflow'

  class << self
    def hello
      @hello
    end
  end
end

Как я мог это решить?


person Domas Mar    schedule 26.10.2014    source источник


Ответы (1)


Вам нужно использовать attr_reader в одноэлементном классе, чтобы он добавил метод «hello» в ваш тестовый одноэлементный класс.

class Test
  @hello = 'stackoverflow'

  class << self
    attr_reader :hello
  end
end
person Pavel S    schedule 26.10.2014
comment
Спасибо, вроде работает нормально. Но у меня возникла новая проблема: у меня разные имена методов и полей. - person Domas Mar; 26.10.2014
comment
если ваш метод и имена переменных экземпляра различаются, rubocop не должен жаловаться на вашу первоначальную реализацию. - person Pavel S; 26.10.2014