[解決済み] Gemfileで正確なバージョンを指定する必要がありますか?
質問
rubygems.org では、多くの gems が正確なバージョンではなく、メジャーバージョンで指定することを推奨していることに気づきました。例えば...
haml-rails gem ...
gem "haml-rails", "~> 0.3.4" # "$ bundle install" will acquire the
# latest version before 1.0.
しかし バンドラーのドキュメント を見ると、このように正確なバージョンを突き止めた方が良さそうな気がしました...。
gem "haml-rails", "0.3.4"
これであなたのhaml-rails gemと、その依存関係はすべて前方に流れないようになりました。数週間後、別のマシンでこのプロジェクトをチェックアウトして
$ bundle install
を実行すると、あなたが指定したすべてのものが正確に同じバージョンになっているはずです。
私はポイントリリースがものを壊すのを見たことがありますし、Bundlerの全体的なアイデアの一部は、"
Bundle.lock
というものだと思っていました。
でもrubygems.orgでは"~>"をよく使うので、もしかしたら何か見落としているのでしょうか?
Bundlerとgem管理を理解する上で、どんな説明でも非常に役に立ちます。
どのように解決するのですか?
これは、Gemfile.lock ファイルの目的である、実行中の
bundle install
を実行すると、そこに記載されている依存関係を使用してインストールするだけで、Gemfileを再解決することはありません。 依存関係を更新したり、gemのバージョンを更新したりするためには、明示的に
bundle update
を実行する必要があり、それによって Gemfile.lock ファイルが更新されます。
もしGemfile.lockがなかったら、あなたが言うように依存関係やgemのバージョンが変わる可能性があるので、コードを本番環境にデプロイすることは大きな問題になるでしょう。
要するに、悲観的なバージョン制約演算子 (
~>
) を使うのは一般的に安全でしょう。 を実行した後は、必ずテストを再実行するようにしてください。
bundle update
を実行した後にテストを再実行し、何も壊れていないことを確認します。
があるので いい記事 Yehuda KatzによるGemfile.lockについてのより詳しい情報があります。
関連
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] 属性を割り当てる場合、引数としてハッシュを渡す必要がある
-
[解決済み] Railsでグループとカウント
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".
-
[解決済み] 未初期化の定数 "コントローラ名"
-
[解決済み] Gemfileにローカルのgemを指定するにはどうしたらいいですか?
-
[解決済み】Ruby: Gemfileの「require: false」はどういう意味ですか?
-
[解決済み] rails3プロジェクトからgemsをアンインストールする最良の方法は何ですか?
-
[解決済み] Bundlerです。Gemfile を変更した後、デプロイメントモードでインストールしようとしています。
-
[解決済み] bundlerのダウングレードやrailsのアップグレードはどのように行うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bundle installが "Could not locate Gemfile "を返す。
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み】OS X Yosemite 10.10.5 で [Ruby on Rails] 5 をインストールすると extconf が失敗して終了コード 1 エラーになる。
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Oauth2 Instagram API "リダイレクトURIが登録されたリダイレクトURIと一致しない"
-
[解決済み] rails erb フォームヘルパー options_for_select :selected
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]
-
[解決済み] Rails 4で、以前のバージョンのRailsでattr_accessibleを使用していた状況に遭遇した場合、Forbidden Attributes Errorが発生する。