メインコンテンツまでスキップ

カスタム非推奨ストリーム

デフォルトでは、非推奨に関する警告を出力するためのカスタム出力ストリームを定義します(デフォルトは $stderr)。

RSpec.configure do |c|
c.deprecation_stream = File.open('deprecations.txt', 'w')
end

または

RSpec.configure { |c| c.deprecation_stream = 'deprecations.txt' }

または --deprecation-out を使用してください。

背景

次の内容で "lib/foo.rb" という名前のファイルがあるとします:

class Foo
def bar
RSpec.deprecate "Foo#bar"
end
end

デフォルト - 非推奨を $stderr に出力

次の内容で "spec/example_spec.rb" という名前のファイルがあるとします:

require "foo"

RSpec.describe "calling a deprecated method" do
example { Foo.new.bar }
end

rspec spec/example_spec.rb を実行すると、

出力に "Deprecation Warnings:\n\nFoo#bar is deprecated" という文字列が含まれるはずです。

ファイルのパスを使用して設定する

次の内容で "spec/example_spec.rb" という名前のファイルがあるとします:

require "foo"

RSpec.configure {|c| c.deprecation_stream = 'deprecations.txt' }

RSpec.describe "calling a deprecated method" do
example { Foo.new.bar }
end

rspec spec/example_spec.rb を実行すると、

出力に "Deprecation Warnings:" という文字列は含まれないはずです。

しかし、出力に "1 deprecation logged to deprecations.txt" という文字列が含まれるはずです。

また、ファイル "deprecations.txt" には "Foo#bar is deprecated" という文字列が含まれるはずです。

File オブジェクトを使用して設定する

次の内容で "spec/example_spec.rb" という名前のファイルがあるとします:

require "foo"

RSpec.configure do |c|
c.deprecation_stream = File.open('deprecations.txt', 'w')
end

RSpec.describe "calling a deprecated method" do
example { Foo.new.bar }
end

rspec spec/example_spec.rb を実行すると、

出力に "Deprecation Warnings:" という文字列は含まれないはずです。

しかし、出力に "1 deprecation logged to deprecations.txt" という文字列が含まれるはずです。

また、ファイル "deprecations.txt" には "Foo#bar is deprecated" という文字列が含まれるはずです。

CLI の --deprecation-out オプションを使用して設定する

次の内容で "spec/example_spec.rb" という名前のファイルがあるとします:

require "foo"
RSpec.describe "calling a deprecated method" do
example { Foo.new.bar }
end

rspec spec/example_spec.rb --deprecation-out deprecations.txt を実行すると、

出力に "Deprecation Warnings:" という文字列は含まれないはずです。

しかし、出力に "1 deprecation logged to deprecations.txt" という文字列が含まれるはずです。

また、ファイル "deprecations.txt" には "Foo#bar is deprecated" という文字列が含まれるはずです。