Jey*_*ran 46 ruby vim warnings rspec ruby-on-rails
当我运行我的规格时,我正在寻找一种方法来抑制Ruby警告.
spec spec/models/account_spec.rb
Run Code Online (Sandbox Code Playgroud)
我收到警告,例如:
DEPRECATION WARNING: ActiveSupport::Dependencies.load_paths is deprecated, ...
warning: already initialized constant SOME_CONSTANT_NAME
Run Code Online (Sandbox Code Playgroud)
删除ActiveSupport
警告很容易ActiveSupport::Deprecation.silenced = true
.
作为spec
命令的一部分,如何防止已初始化的常量警告?或者通过创建另一个spec
可以抑制此类警告的文件.请记住,这些警告来自gem文件,因此我无法进入这些文件并将其包围起来Kernel.silence_warnings
.
注意:
我知道抑制警告很糟糕.但是,当我spec
从内部运行单个内容时,vim
如果警告不会使我的屏幕混乱,那将会很好.
Jak*_*b S 60
如果直接使用ruby命令而不是spec包装器运行规范,则可以使用-W命令行选项来静默警告:
$ ruby --help
[...]
-W[level] set warning level; 0=silence, 1=medium, 2=verbose (default)
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下:
$ ruby -W0 -Ispec spec/models/event_spec.rb
Run Code Online (Sandbox Code Playgroud)
不应该向你显示任何警告.
或者,您可以在加载gem之前设置$ VERBOSE = nil,即在environment.rb的顶部(如果您使用的是Rails 3,则设置为application.rb).请注意,这会一直禁用所有警告.
或者,由于您使用的是Rails,如果您使用的是Bundler,则应该能够在Bundler.require块周围使用Kernel.silence_warnings:
Kernel.silence_warnings do
Bundler.require(:default, Rails.env) if defined?(Bundler)
end
Run Code Online (Sandbox Code Playgroud)
更有选择性地,仅为加载特定宝石设置$ VERBOSE:
config.gem 'wellbehaving_gem'
original_verbosity = $VERBOSE
$VERBOSE = nil
config.gem 'noisy_gem_a'
$VERBOSE = original_verbosity
Run Code Online (Sandbox Code Playgroud)
Din*_*gle 44
的语法RUBYOPT
是
RUBYOPT="-W0" rspec
Run Code Online (Sandbox Code Playgroud)
在ruby 2.1.x和2.14.x中测试过
G. *_*Joe 18
与此相关的帖子,你可以根据你的工作环境日折旧管理警告,如表示,轨道导向:
active_support.deprecation_behavior设置环境的弃用报告,默认为:log for development,:notify for production和:stderr for test.如果没有为config.active_support.deprecation设置值,则此初始化程序将提示用户在当前环境的config/environments文件中配置此行 .可以设置为值数组.
所以只需更改config/environments/test.rb
值:stderr for :log
Rails.application.configure do
...
# Print deprecation notices to the log file instead of console.
config.active_support.deprecation = :log
...
end
Run Code Online (Sandbox Code Playgroud)
有了这个,depecation警告将log/test.log
在控制台输出中
Sco*_*ten 17
您还可以使用"RUBYOPT"环境变量将-W0传递给rspec:
RUBYOPT=W0 rspec spec/models/event_spec.rb
Run Code Online (Sandbox Code Playgroud)
这允许您通过传入目录来运行多个规范
RUBYOPT=W0 rspec spec/models
Run Code Online (Sandbox Code Playgroud)
小智 8
对我有用的唯一解决方案是添加到$VERBOSE = nil
我的 config/environments/test.rb 文件顶部
Rails.application.configure do
$VERBOSE = nil
Run Code Online (Sandbox Code Playgroud)
我遇到了 faker 警告问题faker-1.9.6/lib/faker/default/number.rb:34
。在本地使用它,因为它隐藏了所有其他警告。
小智 6
把Warning[:deprecated] = false
以后require "rails/all"
的config/application.rb
作品很好地到处抑制这些警告。你可以做
Warning[:deprecated] = false if Rails.env.test?
Run Code Online (Sandbox Code Playgroud)
对于您的特定情况,或者更好 - 将其config/environments/test.rb
放入 .
归档时间: |
|
查看次数: |
39315 次 |
最近记录: |