質問
私は次のような宝石を作成しています
- 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'
他のヒント
の宝石を見てください。これは他の宝石のヘルパーです。
所属していません StackOverflow