Ruby我的:未解决Ruby全局变量参考
RubyMine: Unresolved Ruby Reference for global variable
运行 RubyMine 2016.2.4。该项目有一个名为 $environment
的 "global" 单例。在整个代码库中,此文件 require_relative
用于访问运行时依赖项。 RubyMine 为 类 中使用此全局变量的每个 $environment
实例显示 "Unresolved Ruby Reference"。
environment.rb
文件的外观模型:
require 'singleton'
class Environment
include Singleton
def log
...
end
end
$environment ||= Environment.instance
RubyMine 抱怨的用法示例:
require_relative '../environment'
class FancyWorker
def run
...
$environment.log.info 'Running!'
end
end
我尝试搜索如何解决 RubyMine 中的这个检查问题,但没有成功。我不想禁用检查,因为它对查找合法问题很有用 - 但这不是合法问题。
(请继续评论全局变量对你自己有害,我没有做出那个设计决定 - 我只是想帮助 RubyMine 理解参考。)
我认为您在 RubyMine 上发现了一个错误。尝试更改:
$environment ||= Environment.instance
至:
$environment = $environment || Environment.instance
或者如果您确定不会在其他任何地方定义 $environment
则直接分配它。
运行 RubyMine 2016.2.4。该项目有一个名为 $environment
的 "global" 单例。在整个代码库中,此文件 require_relative
用于访问运行时依赖项。 RubyMine 为 类 中使用此全局变量的每个 $environment
实例显示 "Unresolved Ruby Reference"。
environment.rb
文件的外观模型:
require 'singleton'
class Environment
include Singleton
def log
...
end
end
$environment ||= Environment.instance
RubyMine 抱怨的用法示例:
require_relative '../environment'
class FancyWorker
def run
...
$environment.log.info 'Running!'
end
end
我尝试搜索如何解决 RubyMine 中的这个检查问题,但没有成功。我不想禁用检查,因为它对查找合法问题很有用 - 但这不是合法问题。
(请继续评论全局变量对你自己有害,我没有做出那个设计决定 - 我只是想帮助 RubyMine 理解参考。)
我认为您在 RubyMine 上发现了一个错误。尝试更改:
$environment ||= Environment.instance
至:
$environment = $environment || Environment.instance
或者如果您确定不会在其他任何地方定义 $environment
则直接分配它。