2015-05-25 23 views
0

我使用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是假的。

我可以讓$VERBOSE真正通過與--warnings選項運行rspec,但我認爲RSpec的不覆蓋有警告會發生什麼,除非我明確的告訴它這樣做。

沒有,我可以看到在spec/spec_helper.rbconfig/environments/test.rb.rspec似乎配置警告。

是否RSpec的變化$VERBOSE從真到假?

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 

回答

0

RSpec的(至少在3.2.0版本)時才使用warnings配置選項設置你$冗長,但它可能你已經有了一些代碼或偏愛文件的某處這臺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 

堆棧跟蹤有望足以找到它,或者你可以得到一個位跟蹤功能的內容更加巧妙。

相關問題