スポンサーリンク
rails new したときに、Rubygemsのバージョンが古い、という警告が出てしまいました。
アップデート方法を調べてみると、まず「gem update --system」という方法があるようなのですが、これは失敗しました。
Ubuntu の場合は、パッケージマネージャを利用せよ、ということでした。
しかし、そもそもgemコマンドは、パッケージマネージャでインストール(apt-get install)したものではなく、Ruby on Rails公式ドキュメントに従って、rbenvを利用してインストールしたもので、=/.rbenv/shims/gem にインストールされていました。
この場合の rubygems のアップデート方法について調べたので、メモしておきます。
目次
スポンサーリンク
rails new でWarningが出る
「rails new app-name」コマンドを実行した際に次のエラーが出ました。
$ rails new app-name ... Warning: You're using Rubygems 1.8.23 with Spring. Upgrade to at least Rubygems 2.1.0 and run `gem pristine --all` for better startup performance. ...
gem update --system はダメ
ここにはインストール方法が表示されていないので調べてみると、「$ gem update --system」を実行するとアップデートできるというのを見つけたのですが、こちらはこちらで、次のエラーが出て実行できませんでした。
$ gem update --system ERROR: While executing gem ... (RuntimeError) gem update --system is disabled on Debian, because it will overwrite the content of the rubygems Debian package, and might break your Debian system in subtle ways. The Debian-supported way to update rubygems is through apt-get, using Debian official repositories. If you really know what you are doing, you can still update rubygems by setting the REALLY_GEM_UPDATE_SYSTEM environment variable, but please remember that this is completely unsupported by Debian.
パッケージマネージャでインストールした(apt-getでインストールした)rubygemsが上書きされちゃうから、ちゃんとパッケージマネージャでアップデートしてね的なことが表示されました。
apt-get?
しかし、そもそも ruby をインストールするのに、apt-get は使っていませんでした。
Ruby on Rails の公式ドキュメントに従ったところ、 rbenv というコマンドと、そのプラグインである ruby-build を使ってインストールしていました。
なので、それ関連でどうにかするのが良いはずです。
そのため、他に見つけた「$ gem install rubygems-update」「$ update_rubygems」でアップデートする方法も良さそうなのですが、優先度は後回しに。
rbenv-gem-update?
そこで、rbenvプラグイン周りを探してみると、公式のプラグイン一覧に、「rbenv-gem-update」というものがありました。まず、次のコマンドでインストールします。
$ git clone https://github.com/nicknovitski/rbenv-gem-update ~/.rbenv/plugins/rbenv-gem-update
そして、rbenv install 2.2.2 で、rubyごとインストールしました(rbenv install する際に~と書いてあったので)。
$ rbenv install 2.2.2 rbenv: /home/did2/.rbenv/versions/2.2.2 already exists continue with installation? (y/N) y Downloading ruby-2.2.2.tar.gz... -> https://dqw8nmjcqpjn7.cloudfront.net/5ffc0f317e429e6b29d4a98ac521c3ce65481bfd22a8cf845fa02a7b113d9b44 Installing ruby-2.2.2... Installed ruby-2.2.2 to /home/did2/.rbenv/versions/2.2.2 Updating rubygems-update Fetching: rubygems-update-2.4.8.gem (100%) Successfully installed rubygems-update-2.4.8 Parsing documentation for rubygems-update-2.4.8 Installing ri documentation for rubygems-update-2.4.8 Installing darkfish documentation for rubygems-update-2.4.8 Done installing documentation for rubygems-update after 1 seconds Parsing documentation for rubygems-update-2.4.8 Done installing documentation for rubygems-update after 0 seconds Installing RubyGems 2.4.8 RubyGems 2.4.8 installed Parsing documentation for rubygems-2.4.8 Installing ri documentation for rubygems-2.4.8 ...
しかし、終了後に「$ gem -v」してみても、1.8.23のままでした。
よくよくこのプラグインの説明を見てみると、この rbenv-gem-update は、そもそも内部で「gem update --system」を実行しているだけでした。これではダメそうです。
rubygems-update
ただ、この出力をよく見てみると、rubygems-update がインストールされていることがわかりました。
先ほど、飛ばした方法です。
そこで、結局「$ update-rubygems」を実行してみました。
しかし、これがまたエラーになってしまいました。
$ update_rubygems rbenv: version `system' is not installed
エラーが怪しいので、先ほどのプラグインをとりあえず削除しました。
$ rm -rf ~/.rbenv/plugins/rbenv-gem-update
ただ、これでも同じエラーになってしまいました。
エラー回避
別のパターンですが、同じエラーが出ている記事を参考に、次の手順でやり直してみると、うまくいきました。
$ rbenv global 2.2.2 $ update_rubygems RubyGems 2.4.8 installed Parsing documentation for rubygems-2.4.8 Installing ri documentation for rubygems-2.4.8 === 2.4.8 / 2015-06-08 Bug fixes: * Tightened API endpoint checks for CVE-2015-3900 ------------------------------------------------------------------------------ RubyGems installed the following executables: /home/did2/.rbenv/versions/2.2.2/bin/gem Ruby Interactive (ri) documentation was installed. ri is kind of like man pages for ruby libraries. You may access it like this: ri Classname ri Classname.class_method ri Classname#instance_method If you do not wish to install this documentation in the future, use the --no-document flag, or set it as the default in your ~/.gemrc file. See 'gem help env' for details.
gem のバージョン確認
$ gem -v 2.4.8
まとめ
結論として、アップデートは、「$ update_rubygems」で。
(ただ、そもそも今回は rbenv global 2.2.2 のバージョン指定をしていなかったのが原因だったかも)
スポンサーリンク
スポンサーリンク