カスタム非推奨ストリーム
デフォルトでは、非推奨に関する警告を出力するためのカスタム出力ストリームを定義します(デフォルトは $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" という文字列が含まれるはずです。