質問

私は次のような宝石を作成しています

  • bin ディレクトリ内のいくつかのスクリプト
  • lib ディレクトリ内のユーティリティ クラス
  • テストディレクトリ内のいくつかのテスト
supertool
 bin
   toolA
   toolB
 lib
   supertool
     supertool.rb
     helper.rb
 test
   tc_main.rb
   tc_etc.rb

ここで、Gem をインストールする前にテストを実行するために、テストの先頭に次のスニペットを追加します。

base = File.basename(Dir.pwd)
if base == 'test' || base =~ /supertool/
   Dir.chdir('..') if base == 'test'
   $LOAD_PATH.unshift(Dir.pwd + '/lib')
   Dir.chdir('test') if base =~ /supertool/
end

ただし、特にこれらを bin ディレクトリ内のスクリプトにも入れなければならない場合、これは面倒に思えます。gem をインストールする前にテストできるように、環境をセットアップするより良い方法はありますか?きっと私には見つからないシンプルなものだと思います。適切な場所への簡単なリンクは非常に役立ちます:)

役に立ちましたか?

解決

そのスクリプトで何を達成しようとしているのかわかりません。宝石とは関係ないようですが…

走れるようにするためですか? ruby tc_main.rb テスト ディレクトリ内から (または ruby test/tc_main.rb ベースディレクトリから)、ロードパスは適切に設定されていますか?もしそうなら、もっと良い方法があります:

テスト ディレクトリに、 test_helper.rb ファイル。そのファイルにこれを入れます

$LOAD_PATH << File.expand_path( File.dirname(__FILE__) + '/../lib' )

すべてのテスト ファイルで、最初の行を次のように設定します。

require 'test_helper'

テストディレクトリ内にサブディレクトリがある場合、それらのサブディレクトリ内のファイルは次のことを行うことができます。

require '../test_helper' 

他のヒント

の宝石を見てください。これは他の宝石のヘルパーです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top