web-dev-qa-db-ja.com

rspecを実行するときに「circularrequire」に関する警告が多すぎます

こんにちは、rspecを実行すると、多くの警告が表示されました。

それを修正する方法は? rbenvでRubyバージョン2.1.2を試しましたが、まったく機能しませんでした。

これが私のGemfileです

source 'https://rubygems.org'

gem 'bootstrap-sass'
gem 'coffee-Rails'
gem 'Rails'
gem 'haml-Rails'
gem 'sass-Rails'
gem 'uglifier'
gem 'jquery-Rails'

group :development do
  gem 'sqlite3'
  gem 'pry'
  gem 'pry-nav'
  gem 'thin'
  gem "better_errors"
  gem "binding_of_caller"
end

group :test, :development do
    gem 'rspec-Rails'
end

group :production do
  gem 'pg'
  gem 'Rails_12factor'
end
gem 'hirb'
gem 'crack'
gem 'ap'
gem 'awesome_print'

# gem 'faker'

警告メッセージ

% rspec                                                                                                                                             (git)-[feature/w1_test_the_video_model] 
nil
/Users/jeff/.rbenv/versions/2.0.0-p481/lib/Ruby/gems/2.0.0/gems/bootstrap-sass-3.1.1.1/lib/bootstrap-sass/sass_functions.rb:20: warning: ambiguous first argument; put parentheses or even spaces
/Users/jeff/.rbenv/versions/2.0.0-p481/lib/Ruby/gems/2.0.0/gems/sass-3.2.19/lib/sass/version.rb:5: warning: loading in progress, circular require considered harmful - /Users/jeff/.rbenv/versions/2.0.0-p481/lib/Ruby/gems/2.0.0/gems/sass-3.2.19/lib/sass.rb
    from /Users/jeff/.rbenv/versions/2.0.0-p481/bin/rspec:23:in `<main>'
    from /Users/jeff/.rbenv/versions/2.0.0-p481/bin/rspec:23:in `load'
    from /Users/jeff/.rbenv/versions/2.0.0-p481/lib/Ruby/gems/2.0.0/gems/rspec-core-3.0.0/exe/rspec:4:in `<top (required)>'
    from /Users/jeff/.rbenv/versions/2.0.0-p481/lib/Ruby/gems/2.0.0/gems/rspec-core-3.0.0/lib/rspec/core/runner.rb:38:in `invoke'
    from /Users/jeff/.rbenv/versions/2.0.0-p481/lib/Ruby/gems/2.0.0/gems/rspec-core-3.0.0/lib/rspec...
28
user3675188

同じエラーが発生し、ページを参照するように修正しました。

RSpecをオンにしてガードRails 4多くの警告を出す

--warningsデフォルトで.rspecファイルのオプション。その行を削除すると、警告が消えます。

38
isseium

これは修正ではありませんが、--warningsファイルから.rspecを削除すると、警告が「消える」ようになります。

基本的に、--warningsフラグはRubyを冗長モードにします。これにより、一連の 後で噛み付く可能性のある構文の問題 のアラートがオンになります。残念ながら、警告を有効にしてテストされたことがないコードがたくさんあります(おそらく使用している)。つまり、自分のものではないコードのジャンクがたくさん表示されているということです。

この場合、sassgemに問題があるようです。

23
James Mason

これらは循環依存のためにrspecによって発せられる警告です。おそらくこれは、正しくなくなったrequireステートメントの組み合わせです。 (私はRSpec 3.0の時点で信じています。)

これがRails app:

  1. プロジェクトが古すぎてRails_helper.rbがない場合は、Rails g rspec:installを使用してこれを設定する必要があります。 Rails_helper.rbにはspec_helperが必要であり、Railsに固有のものが含まれています。
  2. .rspecファイルに--require 'Rails_helper'が含まれていること、およびソース管理にチェックインされていることを確認してください。
  3. スペックファイルの先頭からrequire 'spec_helper'またはrequire 'Rails_helper'を削除します。

これがRails app:

  1. .rspecファイルに--require 'spec_helper'が含まれていること、およびソース管理にチェックインされていることを確認してください。
  2. スペックファイルの先頭からrequire 'spec_helper'を削除します。

これにより、特定のファイルでrspecを実行するか、すべてのファイルでrspecを実行するかに関係なく、依存関係が1回だけロードされるようになります。

0
Robin Daugherty