Как я должен опробовать свой драгоценный камень во время разработки?

Допустим, у меня есть гем с именем foo с такой файловой структурой:

foo.gemspec
test_foo.rb
lib/foo.rb
lib/foo/file1.rb
lib/foo/file2.rb

Файл test_foo.rbсодержит некоторый код, который я использую, чтобы опробовать свой гем. Он получает доступ к коду гема с помощью следующей строки:

require './lib/foo'

Затем lib/foo.rbобращается к другим файлам, необходимым для гема, следующим образом:

require './lib/foo/file1'
require './lib/foo/file2'

Поскольку test_foo.rbнаходится в корне каталога gem, необходимо потребовать файлы в lib/fooс полным путем от корневого каталога.

Все это прекрасно работает и позволяет мне сразу поиграть с моим драгоценным камнем, изменив код, используемый в test_foo.rb.

Однако, если я затем захочу собрать драгоценный камень, мне придется изменить свои вызовы на require, например:

require 'foo/file1'
require 'foo/file2'

вместо

require './lib/foo/file1'
require './lib/foo/file2'

Что довольно утомительно делать каждый раз Я хочу построить драгоценный камень.

Итак, я подумал о другом способе попробовать это: использовать rakeдля автоматизации сборки и установки драгоценного камня, что-то вроде этого:

task :build do
    `gem build foo.gemspec`
    `gem uninstall foo`
    `gem install ./foo-0.0.0.gem`
end

, а затем, когда я внес изменения в мой код и хотел попробовать его, просто запустите rake buildи вызовите require 'foo'в test_foo.rb.

Но это довольно медленный процесс, и кажется, что он лишает ruby ​​смысла как языка, на котором вам не нужно создавать свой код, прежде чем попробовать его.

Итак, мой вопрос: какой рабочий процесс лучше всего использовать при активной разработке драгоценного камня и его тестировании?

8
задан Alex Coplan 9 June 2012 в 09:36
поделиться