我的警察:
# 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时
,这能做吗?还是一个愚蠢的主意?
发布于 2020-04-28 16:17:59
作为一种选择,您可以:
# 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
发布于 2020-04-28 13:02:30
Rubocop是一个静态代码分析器。这意味着当您运行rubocop命令时,它不会加载任何ruby环境,包括Rails。它只是读取红宝石文件和分析作为文本文件。
所以简单的回答是:不,不能用Rubocop来实现。
https://stackoverflow.com/questions/61477841
复制相似问题