3

これまでは、gem 名だけを使用し、バージョン番号について言及することは避けてきました。これは良い習慣ですか (長所: gem は自動的に更新され続けます。短所: アプリが壊れる可能性があります)。

バージョン番号を使用することをお勧めする場合、それを使用するための標準的な方法は何ですか?

編集-「バンドルショー」を行ったところ、Gemfileにリストされている宝石が6つしかないにもかかわらず、約30以上の宝石が表示されています。残りは、アプリの作成時にインストールされるコア宝石であると想定しているため、それらをロックする方法それともそのままにしておくべきですか?

4

5 に答える 5

2

私の提案はYESです。

理由は、外部の依存関係がある程度制御できないため、外部の依存関係を潜在的なブレークポイントと見なしているためです。私が開始していない外部依存関係が失敗の可能性があるという変更。

ソフトウェア開発はすでに複雑であるため、外部の依存関係の変更を制限および制御することの両方が私たちの利点に役立つと強く感じています。

驚きが少ないほど、コードの保守が容易になります。

HTH

于 2013-01-21T13:43:49.783 に答える
2

私はイエスだと思います。なぜなら、初期の頃、gem が自分自身で更新され、後方互換性がないという問題が非常に多かったからです。

通常、これはあるメジャー バージョンから別のメジャー バージョンに切り替えるときに発生します。私にとっては、Rails 2.x から 3.x です。

要するに、Gem ファイルにバージョンがあるのは良いことです。

于 2013-01-21T11:55:01.367 に答える
2

私も最初はそう思いました。

しかし、その後、私がコーディングしたものに完全に適合しないいくつかの更新があったか、機能が動作しなくなる原因となる互換性のない変更があったでしょう。

ジェムがプッシュされたまさにその瞬間にジェムを更新することが少なくとも2回あり、プッシュ時に修正されていなかったバグが原因ですべてが壊れた最初の数人の1人でした。したがって、デバッグしようとしても機能しません。それ以来、私は問題のある宝石をロックし、それが私が行っている唯一のことである場合にのみそれらをアップグレードし、機能が同じであることを確認しました.

動作することがわかっているバージョンを使用することをお勧めします。

その後、ジェムナジウムを使用して宝石を追跡できます

于 2013-01-21T11:56:02.250 に答える
2

bundler の目的の 1 つは、gem の依存関係を特定のバージョンに固定することです。したがって、bundlegemfile に gem を追加した最初の時点で、gem はとにかく特定のバージョンに固定されます。bundle update <gemname>特定の gem を更新するには、具体的に行う必要があります。Just bundle update(すべての gem を最新の互換バージョンに更新する) は、バンドラーの目的を大きく損なうため、避ける必要があります。

そうは言っても、特定の理由がある場合にのみ、Gemfile のバージョンについて言及する必要があると思います。例: Rails バージョン 3.2.8 を具体的に実行したい場合、または ruby​​-net-ldap 0.0.1 を使用する必要がある場合。0.0.2 では一部の機能が壊れるためです。

于 2013-01-21T15:25:43.783 に答える
1

正確なバージョン番号を使用することをお勧めします。おそらくいつでもメジャー バージョンにロックダウンするか、バージョンを指定しないで問題ありませんが、細かいレベルの制御が本当に必要で、他のマシンで実行されているときにプログラムに 100% の信頼を置きたい場合は、正確なバージョン番号を使用してください。

私は正確なバージョン番号が指定されていない状況にありました.私または他の誰かがbundle install. これは、本番環境にデプロイする場合に特に問題になる可能性があります。

Bundlergem 仕様をロックしますが、メジャー リリースのみを使用するように指示している場合は、それをロックします。

またGemfile.lock、依存関係と gem のバージョンが変更される可能性があるため、コードを本番環境にデプロイすることは大きな問題になります。

于 2013-01-21T12:05:15.460 に答える