この優れたチュートリアルを使用してRubyonRailsを学習していますが、作成者が常にGemfileでGemのバージョン番号を指定していることに気付きました(ここ、ここ、およびここを参照)。これは私がやる習慣を身につけるべきものですか?もしそうなら、どのバージョンを指定するかをどうやって知ることができますか?
2 に答える
特定の gem との非互換性が見つかるまで、gem のバージョンを指定しないことをお勧めします。
Bundler 自体が特定のバージョンの gem をロックします。運用マシンで使用することを忘れbundle install --deployment
ずに、開発マシン (または別のディレクトリ) でのみアップグレードを行う必要があります。
プロジェクトの適切なテスト カバレッジを持つことは非常に重要です。テストがなければ、アップグレードによっていつアプリケーションが壊れるかわかりません。次のルートをお勧めします。
- 実行します
rake test
(すべてが機能することを確認するため) - 走る
bundle update
- 走る
rake test
テストに合格したら、 で変更をコミットしGemfile.lock
ます。テストに合格せず、特定の gem をロックしたい場合は、Gemfile でバージョンを指定します。
install --deploymentと deployingについては、バンドラーのドキュメントを参照してください。
gem を特定のバージョンで「フリーズ」することは重要であり、製品化のために何かを準備している場合は必須です。Gem、ライブラリ、およびアプリは時間とともに進化します。進化するために、Gem API の変更が必要になる場合があり、この問題により、以前のバージョンとの後方互換性が失われました。
Rails バージョンの「フリーズ」(昔は「Gem バージョンの指定」と呼ばれていました) に関する古くて優れた記事がいくつかあります。たとえば、DHH の Freeze is cool, so freeze for goodnessや、Should I freeze myレールアプリケーション? .
どのバージョンを指定すればよいかを知るために、最新バージョンを指定することをお勧めします。次にgem install gemname
、gem list gemname
インストールしたばかりのバージョンを確認します。