2015-05-25 2 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 правда, запустив rspec с опцией --warnings, но я предполагаю, что RSpec не будет превалировать, что происходит с предупреждениями, если я явно не попросить его сделать это.

Ничего из того, что я вижу в spec/spec_helper.rb, config/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 

ответ

0

RSpec (по крайней мере, в версии 3.2.0) устанавливает только $ VERBOSE при использовании опции warnings конфигурации, но это возможно что у вас есть код или файл предпочтений где-то, который устанавливает warnings=false.

С небольшим количеством детективной работы и крючками трасс Руби, вы можете сузить место, где смотреть. Рубин не обеспечивает трассировку крюк для определения глобальных переменных, но вы можете приблизить его путем проверки значения на каждом событии:

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

Трассировка стека, мы надеемся, будет достаточно, чтобы найти его, или вы могли бы получить немного более умный с содержанием функции трассировки.