2

これが私の現在の状況です:

Railsエンジン( "awesome_engine")に取り組んでいます。私はすべての開発をホストアプリケーション、つまり:pathパラメーターを使用してGemfileの依存関係としてこのエンジンを指定するRailsアプリを介して行います

    gem "awesome_engine", :path => "awesome_engine"

これはうまく機能します-エンジンgemフォルダーは、ホストアプリケーションのルートに対して「awesome_engine」の下にあります。ただし、「awesome_engine」は、開発中のgem「awesome_core」を参照します。したがって、awesome_engine/Gemfileは次のようになります。

    gem "awesome_common", :path => "../awesome_core"

この設定の問題は、Bundlerがホストレールアプリケーションのアプリケーションバンドルを作成するときにawesome_engine /でGemfileを検索せず、「awesome_engine」のgemspecから依存関係を読み取るだけであるようです。これは単一のgemに適しています。 「パッケージ化されていない」状態でロードしたい場合は、関連するgemのグラフを同時に処理したい場合にはあまり適していません。

私は

a)噛むことができる以上に噛み砕こうとしているので、開発中のホストアプリのGemfileに「awesome_core」をダンプして満足する必要があります(私はそうはなりません:-))

b)Bundlerにこれを実行させる方法について些細なことを見逃している

c)上記のいずれでもない(以下を指定してください:_ __ _ ____

ありがとう!アンドラス

ps:Bundlerが「awesome_engine / Gemfile」を解析しないことはわかっています。これは、a)がらくたを入れても、ホストアプリでのバンドルインストールが正常に実行されるためです。b)そのファイルの他の依存関係がホストアプリケーションアプリバンドルに含まれることはありません。

4

1 に答える 1

1

したがって、(現在のプロジェクトの)Gemfileを介してgemを指定する場合、明確に定義された依存関係を持つものを参照していると見なされます。これは、これらの依存関係に名前を付ける有効な.gemspecファイルがあることが期待されることを意味します。しかし、これはあなたがすでに知っています。

c)に対する私の提案はbundle gem、Gemfileの情報が.gemspecファイルから取得されるようにgemを設定するgemを作成することです。http://gembundler.com/v1.2/bundle_gem.htmlを見て、テストgemを生成し、そのソースを読むだけで、非常に明確です。

それがあなたの問題を解決することを願っています。

于 2012-09-17T14:05:57.407 に答える