---
title: "rspecの警告を抑制する"
description: "$ RUBYOPT=W0 bundle exec rspec spec/ ..."
canonical: https://oozou.com/til/suppress-rspec-warnings-33
locale: ja
date: 2020-10-13
topic: ruby
---

# rspecの警告を抑制する

> $ RUBYOPT=W0 bundle exec rspec spec/ ...

Published: 2020-10-13 · Topic: [ruby](https://oozou.com/ja/til-topics/ruby) ([markdown](https://oozou.com/ja/til-topics/ruby.md))

```shell
$ RUBYOPT=W0 ./bin/rspec spec/
...

$ RUBYOPT=W0 bundle exec rspec spec/
...

$ RUBYOPT=W0 rspec
...

$ RUBYOPT=W0 ...
...
```

RSpecの警告はテスト出力を散らかし、特に大規模なRailsプロジェクトではログを読みにくくします。ここでは、クリーンなワークフローを保ちながら警告を効果的に抑制する方法を紹介します。

# 警告をグローバルに抑制する

spec\_helper.rb または rails\_helper.rb に次を追加すると、テストスイート全体で警告を無効にできます。

```
$VERBOSE = nil
```

ユースケース：すべての警告を手早く黙らせるのに最適ですが、アプリや依存関係全体の重要な情報が隠れてしまう可能性があります。

# 特定の警告を抑制する

警告を発生させるコードを抑制ブロックで包みます。

```
def suppress_warnings 
original_verbose = $VERBOSE 
$VERBOSE = nil 
yield 
ensure 
$VERBOSE = original_verbose 
end 

suppress_warnings do 
require 'some_gem_with_warnings' 
end
```

**ユースケース**：警告を特定の依存関係やコードブロックに限定して抑制したい場合に便利です。

# RSpecの警告を抑制する

RSpecには自身の警告を管理するための組み込み設定があります。spec\_helper.rb に次を追加します。

```
RSpec.configure do |config| 
config.warnings = false 
end
```

**ユースケース**：Rubyや依存関係の警告は表示したまま、RSpec固有の警告だけを抑制します。

# 非推奨警告をリダイレクトする

非推奨（deprecation）警告は、後で確認できるようログファイルにリダイレクトします。

```
RSpec.configure do |config| 
config.deprecation_stream = File.open('log/rspec_deprecations.log', 'w') 
end
```

ユースケース：非推奨警告の内容を確認できるようにしつつ、テスト出力をきれいに保ちます。

# 環境ごとの抑制

CIなど、特定の環境でのみ警告を抑制します。

```
$VERBOSE = nil if ENV['SUPPRESS_WARNINGS'] == 'true'
```

ユースケース：ローカル開発中は警告を表示し、CIではログをきれいにするために非表示にします。

これらのアプローチをニーズに合わせて使い分ければ、テスト出力をクリーンで実用的な状態に保ち、開発とCIワークフローの生産性を高められます。

---

Contact OOZOU: hello@oozou.com · +66 2544 0000 · https://oozou.com/ja/contact

More for AI agents: https://oozou.com/llms.txt · every page has a markdown twin at its URL plus ".md"
