Как определить глобальные настройки Rails в пользовательском COP? - PullRequest
0 голосов
/ 28 апреля 2020

Мой полицейский:

# lib/rubocop/cop/myproject/my_cop.rb

require 'rubocop'

module RuboCop
  module Cop
    module MyProject
      class MyCop < RuboCop::Cop::Cop
        # ...
      end
    end
  end
end

Этот полицейский должен знать некоторые глобальные настройки Rails. Например, Rails.logger.log_level

Но я получаю ошибки:
1) undefined method 'logger' for RuboCop::Cop::Rails:Module - когда я звоню Rails.logger.log_level
2) uninitialized constant Rails - когда я звоню ::Rails.logger.log_level

Можно ли это сделать или это глупая идея?

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

В качестве опции вы можете сделать:

# lib/rubocop/cop/myproject/my_cop.rb

require 'rubocop'
require_relative '../../../../../config/environment'

module RuboCop
  module Cop
    module MyProject
      class MyCop < RuboCop::Cop::Cop
        # ...
      end
    end
  end
end

И позвонить ::Rails.logger.level

1 голос
/ 28 апреля 2020

Rubocop - это анализатор кода stati c. Это означает, что когда вы запускаете команду rubocop, она не загружает никакие среды ruby, включая Rails. Он просто читает ruby файлы и анализирует их как текстовые файлы.

Таким образом, краткий ответ: нет, это не может быть достигнуто с Rubocop.

...