次のようなファイル構造を持つfooというgemがあるとしましょう。
foo.gemspec
test_foo.rb
lib/foo.rb
lib/foo/file1.rb
lib/foo/file2.rb
このファイルtest_foo.rb
には、gemを試すために使用するコードが含まれています。次の行でgemのコードにアクセスします。
require './lib/foo'
次に、lib/foo.rb
gemに必要な他のファイルに次のようにアクセスします。
require './lib/foo/file1'
require './lib/foo/file2'
はgemディレクトリのルートにあるため、ルートディレクトリからの完全なパスでtest_foo.rb
ファイルを要求する必要があります。lib/foo
これはすべて正常に機能し、で使用されているコードを変更することで、すぐにgemを試すことができますtest_foo.rb
。
require
ただし、gemを作成する場合は、次のように呼び出しをに変更する必要があります。
require 'foo/file1'
require 'foo/file2'
それ以外の
require './lib/foo/file1'
require './lib/foo/file2'
これは、宝石を作成するたびに行うのが面倒です。
そこで、私はそれを試す別の方法を考えました。それはrake
、gemのビルドとインストールを自動化するために使用することでした。次のようなものです。
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
しかし、それは非常に遅いプロセスであり、試してみる前にコードをビルドする必要がない言語であるルビーのポイントを打ち負かすように少し感じます。
だから、私の質問は、宝石を積極的に開発してテストするときに使用するのに最適なワークフローは何ですか?