2

私はフォルダで宝石を作っています:

/Users/me/projects/ruby/gems/mygamename/

そして、そのレイアウトは次のようになります。

/Users/me/projects/ruby/gems/mygamename/mygamename.gemspec
/Users/me/projects/ruby/gems/mygamename/mygemname.rb
/Users/me/projects/ruby/gems/mygamename/lib/mygemname/file1.rb
/Users/me/projects/ruby/gems/mygamename/lib/mygemname/file2.rb

他のrubyプロジェクトでは、Gemfileでこのgemを参照したいので、次のようにしました。

gem 'mygemname', :path => "/Users/me/projects/ruby/gems/mygamename"

機能をテストするためにgemのテストを作成する必要があることはわかっていますが、他のrubyプロジェクト(Gemfileで参照している)の統合テストも実行できるかどうか興味がありました。

  1. gemを更新した場合、バンドルを再実行する必要がありますか?それとも、そのフォルダから読み取りを続け、変更を取得しますか?

  2. 他のルビープロジェクトからテストする方法について他にアドバイスはありますか?

繰り返しになりますが、gem自体でテストを作成しますが、必要な場合にも、この方法でどのようにテストできるのか疑問に思います。

4

3 に答える 3

1

実行する必要があるのはbundle install1 回だけです。Bundler は gem をキャッシュまたはパッケージ化せず、フォルダーを直接指します。

再起動のルールはメインアプリと同じです。ビュー、アセット、または自動ロードされた ruby​​ ファイルに変更を加えると、それらは自動的に再ロードされます。ただし、アプリで必要な lib ファイルを変更した場合は、アプリを再起動する必要があります。デフォルトでは、Bundler は gem "mygemname" の "lib/mygemname.rb" を必要とするため、このファイルはリロードできません。

于 2012-09-24T17:53:20.133 に答える
0

Gemクラス/モジュールはキャッシュされるため、gemfileに変更を加えるたびに、アプリを再起動する必要があります。また、gemspecでgemバージョンを更新しない場合は、再バンドルする必要はありません。gemバージョンを更新する場合、実行する必要があるかもしれませんbundle update gemname

于 2012-09-24T16:26:49.087 に答える
0

gem を開発するときに私が通常行うことは、ディレクトリに Gemfile を作成し、そこから作業することです。Gemfile で、:path オプションを使用して gem への参照を追加します。

gem 'mygemname', :path => '/path/to/my/gem'

次に、bundle install を実行します。このようにして、宝石を再インストールし続ける必要はありません。

私の宝石を実行するときは bundle exec を使用する必要があることに注意してください。

于 2012-10-01T20:38:35.653 に答える