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 则直接分配它。