【问题标题】:Guard with RSpec on Rails 4 giving a lot of warnings使用 RSpec on Rails 4 进行防护,发出大量警告
【发布时间】:2014-07-23 02:08:39
【问题描述】:

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

[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

我正在运行 Rails 4.1.1、Ruby 2.1.2p95 和...

guard (2.6.1)
rspec (3.0.0)
guard-rspec (4.2.9)

我尝试过使用以下方式运行后卫:

guard :rspec, cmd:"ruby -W0 bin/rspec" do

代替:

guard :rspec, cmd:"spring rspec" do

但它什么也没做。

这些警告非常烦人,我很确定不是我造成的。救命!

【问题讨论】:

  • 这可能是因为您正在运行一个相当新的 ruby​​ 版本。其中一颗宝石可能还不完全支持它。
  • 我通过在 1.9.3 上运行它排除了这一点。相同的警告。
  • 正如接受的答案所暗示的那样,这与使用 Guard 没有任何关系。

标签: ruby-on-rails ruby ruby-on-rails-4 rspec


【解决方案1】:

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

【讨论】:

  • 这将删除 all 警告,对吗?如果您只想从 gem 中删除警告怎么办?我想从我自己的代码中看到警告。
  • --warnings 选项在 ruby​​ 级别打开或关闭警告,删除该选项基本上会保留默认的 ruby​​ 和 rails 行为。这个问题的答案并不简单,值得作为一个单独的 StackOverflow 问题提出。
【解决方案2】:

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

#spec/spec_helper.rb

config.warnings = 假

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 2015-03-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    相关资源
    最近更新 更多