0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】gemアップデート時の依存関係の調べ方(Bundler attempted to update GEMNAME but its version stayed the same)

Last updated at Posted at 2022-07-02

はじめに

未経験からエンジニアに転職して、3ヶ月ほど経つエンジニアです。

今回は業務でgemをアップデートするときに詰まった
gemアップデート時の依存関係の調べをテーマに書きます。
↓の警告がでて、gemをアップデートできない場合のアプローチについてです。

Bundler attempted to update GEMNAME but its version stayed the same

結論

  • ↑で該当のgemを探す
  • 依存関係を調べる

依存関係の例

例として、faradayというgemの依存関係を見ていきます。

Gemfile.lock
faraday (1.10.0) # 最新の2.3.0にしたい
$ bundle update faraday 

上記コマンドでgemをアップデートしようとするも、警告が出てアップデートできません。

Bundler attempted to update faraday but its version stayed the same

bundle update --conservative faraday
とすると他のgemのアップデートを抑制することができます。
慎重にアップデートしたい場合は付けるようです。

警告が出たので、faradayの依存関係を見にいきます。

スクリーンショット 2022-07-02 10.02.55.png

アップデート前のバージョンを探します。

スクリーンショット 2022-07-02 10.03.38.png

依存関係をみます。

スクリーンショット 2022-07-02 10.04.49.png

見た感じ(自分の環境では)問題ありませんでした。
ここで問題となっている依存関係を発見できる場合もあると思います!

仕方がないので、Gemfile.lockを再度調べます。

faradayに関係するgemを見ていきます。
上記の画像で示した方法で依存関係を調べていきます。

自分の環境の場合は

faraday_middleware (1.2.0)

このgemの依存関係が原因でした。
スクリーンショット 2022-07-02 10.10.52.png

↑の画像の通り、
faraday1.10.0 から 1.0 に依存しています。
だから↓のコマンドでアップデートできなかった、ということです。

$ bundle update faraday 

じゃあどうやってアップデートするの?

$ bundle update faraday --minor # マイナーバージョンのアップデート
$ bundle update faraday --patch # パッチバージョンのアップデート

これらのオプションを使用すればアップデートできる場合があります。
(パッチバージョンのアップデートでも依存関係の問題でアップデートできないこともあります)

他にもアップデートする方法はありますが、本稿の範疇を超えるので割愛させていただきます。

まとめ

gemのアップデートは深刻なバグを起こす恐れもあるため慎重に行う必要があります。
依存関係を一個ずつ見ていくのは面倒ですが、出戻りを防ぐ意味でも丁寧に確実にやっていくことが大事です。

間違っている点がありましたらご指摘をお願いいたします。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?