【问题标题】:Does RSpec change $VERBOSE from true to false?RSpec 是否将 $VERBOSE 从 true 更改为 false?
【发布时间】:2015-05-25 02:35:29
【问题描述】:

我正在使用 Ruby 2.1.0p0、Rails 3.2.17、RSpec 版本 3.0.0.beta2。

如果我这样做

export RUBYOPT="-w"

bundle exec ruby dummy_code.rb 表示$VERBOSE 为真,而bundle exec rspec dummy_spec.rb 表示$VERBOSE 为假。

我可以通过使用--warnings 选项运行rspec 来使$VERBOSE 为真,但我假设RSpec 不会覆盖警告所发生的情况,除非我明确要求它这样做。

我在spec/spec_helper.rbconfig/environments/test.rb.rspec 中看到的任何内容似乎都没有配置警告。

RSpec 是否将 $VERBOSE 从 true 更改为 false?

dummy_code.rb:

puts "*" * 50
puts $VERBOSE
puts "*" * 50

dummy_spec.rb

describe 'Stuff' do
  it 'does not do much' do
    puts "*" * 50
    puts $VERBOSE
    puts "*" * 50
  end
end

【问题讨论】:

    标签: ruby rspec environment-variables warnings rspec3


    【解决方案1】:

    RSpec(至少在 3.2.0 版中)仅在您使用 warnings 配置选项时设置 $VERBOSE,但您可能在某处有一些代码或首选项文件设置了 warnings=false

    通过一些侦探工作和 Ruby 的跟踪钩子,您可以缩小查找范围。 Ruby 没有提供用于设置全局变量的跟踪钩子,但您可以通过检查每个事件的值来近似它:

    set_trace_func proc do |event, file, line, id, binding, classname|
      raise RuntimeError, "Verbose was unset", "#{file}:#{line}" unless $VERBOSE
    end
    

    希望堆栈跟踪足以找到它,或者您可以通过跟踪函数的内容变得更聪明。

    【讨论】:

      猜你喜欢
      • 2016-09-23
      • 1970-01-01
      • 2020-11-25
      • 2017-11-05
      • 2013-09-09
      • 2023-03-08
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      相关资源
      最近更新 更多