在Rails 4上使用RSpec保护,发出很多警告

foo*_*bar 61 ruby rspec ruby-on-rails ruby-on-rails-4

我想知道如何在运行简单的测试时关闭所有这些警告:

[1] guard(main)> 
16:59:46 - INFO - Run all
16:59:46 - INFO - Running all specs
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/rspec-rails-3.0.1/lib/rspec/rails/adapters.rb:124: warning: instance variable @example not initialized
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/rspec-rails-3.0.1/lib/rspec/rails/adapters.rb:124: warning: instance variable @example not initialized
.*

Pending:
  HomeHelper add some examples to (or delete) /Users/esjd/ruby/rails/ts3/spec/helpers/home_helper_spec.rb
    # Not yet implemented
    # ./spec/helpers/home_helper_spec.rb:14

Finished in 0.03601 seconds (files took 7 minutes 48 seconds to load)
2 examples, 0 failures, 1 pending
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:76: warning: global variable `$CELLULOID_DEBUG' not initialized
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:76: warning: global variable `$CELLULOID_DEBUG' not initialized

/Users/esjd/.rvm/gems/ruby-2.1.2/gems/guard-2.6.1/lib/guard/interactor.rb:64: warning: instance variable @enabled not initialized
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/guard-2.6.1/lib/guard/interactor.rb:64: warning: instance variable @enabled not initialized
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/guard-2.6.1/lib/guard/interactor.rb:64: warning: instance variable @enabled not initialized
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/guard-2.6.1/lib/guard/interactor.rb:64: warning: instance variable @enabled not initialized
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:76: warning: global variable `$CELLULOID_DEBUG' not initialized
/Users/esjd/.rvm/gems/ruby-2.1.2/gems/celluloid-0.15.2/lib/celluloid/tasks.rb:76: warning: global variable `$CELLULOID_DEBUG' not initialized
Run Code Online (Sandbox Code Playgroud)

我正在运行Rails 4.1.1,Ruby 2.1.2p95,以及......

guard (2.6.1)
rspec (3.0.0)
guard-rspec (4.2.9)
Run Code Online (Sandbox Code Playgroud)

我试过跑卫:

guard :rspec, cmd:"ruby -W0 bin/rspec" do
Run Code Online (Sandbox Code Playgroud)

代替:

guard :rspec, cmd:"spring rspec" do
Run Code Online (Sandbox Code Playgroud)

但它没有做任何事情.

这些警告非常烦人,我很确定我没有引起它们.救命!

Edw*_*son 138

rspec生成器rails generate rspec:install现在默认将--warnings选项放在.rspec文件中.删除该行,警告将消失.

  • 这会删除所有*警告吗?如果您只想删除宝石的警告怎么办?我想从我自己的代码中看到警告. (10认同)
  • --warnings选项在ruby级别打开或关闭警告,删除选项基本上保留了默认的ruby和rails行为.这个问题的答案并不简单,值得作为单独的StackOverflow问题提出. (3认同)

小智 12

您可以在测试环境中将警告设置为false,以强制Rspec禁用警告消息.

#spec/spec_helper.rb

config.warnings = false

  • 这不适用于rspec 3.3.0 (2认同)