当我尝试使用rake在ruby上运行一些基本的单元测试时,似乎打开了ruby解释器上的调试。这最终导致我在STDOUT中看到了大量警告消息。我不确定为什么会发生这种情况,是否应该发生?
D:\dev\git_repos\app_folder>ruby -v
ruby 2.0.0p647 (2015-08-18) [i386-mingw32]
D:\dev\git_repos\app_folder>rake test TEST=test/midrange_portal_test.rb就像4页的警告
让我相信调试已经打开的输出:
Command failed with status (2): [ruby -w -I"lib;test" -
I"D:/apps/Ruby200/lib/ruby/gems/2.0.0/gems/rake-11.1.2/lib"
"D:/apps/Ruby200/lib/ruby/gems/2.0.0/gems/rake-11.1.2/lib/rake/rake_test_loader.rb" "test/midrange_portal_test.rb" ]
D:\dev\git_repos\app_folder>gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14.1
- RUBY VERSION: 2.0.0 (2015-08-18 patchlevel 647) [i386-mingw32]
- INSTALLATION DIRECTORY: D:/apps/Ruby200/lib/ruby/gems/2.0.0
- RUBY EXECUTABLE: D:/apps/Ruby200/bin/ruby.exe
- EXECUTABLE DIRECTORY: D:/apps/Ruby200/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-mingw32
- GEM PATHS:
- D:/apps/Ruby200/lib/ruby/gems/2.0.0
- H:/.gem/ruby/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/注意这个命令是如何"ruby -w“的。我不知道为什么它会默认到这个级别的调试?任何帮助都会非常感谢,因为我被难住了。
发布于 2016-04-29 06:59:46
因此,经过大量的挖掘,发现使用ruby的rake版本在默认情况下运行带有-w标志的ruby。如果您查看/gems/rake-11.1.2/lib/rake/testtask.rb,会发现有一个设置ruby警告标志的布尔值:
def initialize(name=:test)
@name = name
@libs = ["lib"]
@pattern = nil
@options = nil
@test_files = nil
@verbose = false
@warning = true <--------------------------
@loader = :rake
@ruby_opts = []
@description = "Run tests" + (@name == :test ? "" : " for #{@name}")
yield self if block_given?
@pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil?
define
end你可以用猴子补丁来关闭它,但老实说,这可能只是一个好主意,让它开着,只是修复你的警告。在我的例子中,我正在处理大量的遗留代码,这些代码只是偶尔更新一次,所以不值得这么做。
https://stackoverflow.com/questions/36906356
复制相似问题