2

ruby や ruby​​gems に、ソースに関係なく最新の gem を使用するように依頼できますか?

この質問の更新で述べたように、最近インストールされた新しい ruby​​forge gem (roo 1.3.6) ではなく、ruby が古い github gem (hmcgowan-roo 1.3.5) を使用していることが判明しました。

私の疑いでは、魔法のピクシー (ルビーまたはルビジェムのいずれか) は、「r」の下を見る前に「h」の下を見るということです。

を実行することで、強制的に ruby​​forge を使用することができます。

gem "roo"

しかし、hmcgowan-roo または roo のいずれかを使用してもよいが、最新バージョンが必要であることを ruby​​/rubygems に伝えることは可能ですか?

4

2 に答える 2

1

いいえ、残念ながら方法はありません。RubyGemsに関する限り、それらは同じgemではないため、RubyGemsはどちらが最新バージョンであるかを自動的に判別できません。パラノイアの目的で、gemメソッドの呼び出しがなく、同じライブラリの複数のバージョンがインストールされている場合、require行は非決定論的であると見なす必要があります。

一般に、gemメソッドの呼び出しは、とにかく必要な場所とは異なる場所に配置する必要があります(これにより、ファイルを遅延ロードできます)。したがって、大量の呼び出しを実行するだけの頻繁に更新されるファイルを用意することは完全に合理的です。 gemメソッドを使用して、すべての正しいバージョンを確実に取得します。さらに、本番環境では、通常、「最新バージョンを教えて」を実行したくありません。最新バージョンではAPIが変更されているか、メソッドの名前が変更されている可能性があるためです。テストを行っていない場合は、テストを行いません。それが壊れるかどうかを知っています。すべてのサードパーティライブラリの特定の既知のバージョンを使用していることを常に確認する必要があります。

ライブラリの作成者として、APIの古い使用法を壊すような変更を加える場合は、通常、1つまたは2つのバージョンのヘッドアップを提供します。ただし、しばらく更新されない場合があり、これに巻き込まれます。幸いなことに、ほとんどの人は注意深く、物事を上演します。ライブラリをテストせずに、本番環境で直接ライブラリを更新する人にならないでください。:-)

于 2009-09-27T01:16:53.280 に答える
0

gem メソッドを使用して、必要なものを指定できます。

RubyGems マニュアル - 第 4 章

于 2009-07-13T16:18:33.777 に答える