Rubyでgemを開発する場合、ほとんどの場合、RSpecを自分のニーズに合わせて構成できるファイルが必要です。それを行う前に、すべてのspec
の例で使用できるヘルパーモジュールが必要です。
Railsアプリケーションではspec/spec_helper.rb
という名前のファイルが使用されます。私を悩ます1つのことは、典型的なRails環境では、ロードするサンプルを含むすべてのファイルでこのspec_helper.rbファイルが必要です過去には、ロードパスの変更とサンプルファイル内の相対requireパスに関連して、これに関して多くの問題がありました。
さて、私のgemについては、サンプルファイルをロードする前にRSpecにspec_helper.rbファイルを要求するように指示したいだけです。 rspec実行可能ファイル、またはRakefileで定義できるrake specタスクを呼び出すかどうかは事実とは無関係です。
私はRSpecにspec_helper.rbの場所のみを伝えることができることを知っていますが、このspec_helper.rbはすべてのサンプルファイルを手動で必要としますが、そのアプローチの追加メンテナンスを避けたいです。
これを達成するためのより良い方法はありますか?
RSpec 2では、/spec
フォルダーは常に自動的にロードパスにあります。つまり、必要なものは次のとおりです。
require 'spec_helper'
スペックファイルの先頭。これは常に/spec/spec_helper.rb
をロードしますが、これはあなたが逃げることができる最小限のものです。
つまり、次のような恐ろしいアプローチが必要ですdo n't
require File.join(File.dirname(File.dirname(__FILE__)), 'spec_helper.rb')
(異なるネストレベルに合わせて更新する必要があります)。
.rspec
ファイルにオプション--require spec_helper
を追加することもできます。これは、各specファイルでこのファイルを必要としますが、上部に手動のrequireステートメントはありません。
--require spec_helper
行を実行すると、RSpec 3.0の.rspecファイルにrspec --init
行が自動的に追加されます。