Тестирование Ruby Gem перед развертыванием
Вопрос
Я создаю драгоценный камень, который имеет
- несколько скриптов в каталоге bin
- служебные классы в каталоге lib
- и несколько тестов в тестовом каталоге
supertool bin toolA toolB lib supertool supertool.rb helper.rb test tc_main.rb tc_etc.rb
Теперь, чтобы запустить тесты еще до того, как я установлю драгоценный камень, у меня есть следующий фрагмент в верхней части моих тестов:
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.Есть ли лучший способ настроить среду, чтобы мы могли тестировать драгоценные камни перед их установкой?Я уверен, что это что-то простое, чего я просто не могу найти.Простая ссылка на нужное место очень помогла бы :)
Решение
Я не уверен, чего вы пытаетесь достичь с помощью этого сценария.Кажется, это не имеет ничего общего с драгоценными камнями...
Это для того, чтобы ты мог бежать 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'
Другие советы
Взгляните на самоцвет мотыга, он помощник для других самоцветов.