記事内にはプロモーションが含まれています

【Ruby】アップデート方法まとめ!Mac・Winでのバージョン更新からRailsのupdateメソッドまで

【Ruby】アップデート方法まとめ!Mac・Winでのバージョン更新からRailsのupdateメソッドまで Ruby

Rubyで開発を進めていると、

「最新のRubyバージョンを使いたい」
「gemをアップデートしたい」
「データベースのレコードを更新したい」

・・・など、様々な場面で「update」という言葉に直面します。

一言で「Rubyのアップデート」と言っても、それがプログラミング言語自体のバージョンアップを指すのか、それともプログラム内でのデータ更新処理を指すのかによって、やるべきことは全く異なります。

この記事では、MacやWindowsなどのOSごとに異なるRuby本体のバージョンアップ手順から、BundlerやGemの管理、さらにはRuby on Railsやハッシュオブジェクトにおける update メソッドの使い方まで、最新情報を踏まえて網羅的に解説します。

【本記事の信頼性】
プロフィール
執筆者:マヒロ
  • 執筆者は元エンジニア
  • SES⇒大手の社内SE⇒独立
  • 現在はこじんまりとしたプログラミングスクールを運営
  • モットーは「利他の精神」

Mac・Windows・Ubuntu別:Ruby本体を最新版にアップデートする方法

Rubyの新しいバージョンがリリースされた際、セキュリティ向上や新機能を利用するためにアップデートは欠かせません。

しかし、お使いのOSや環境構築の方法によって手順が異なります。

ここでは代表的な環境ごとの手順を紹介します。

Macでrbenvを使ってアップデートする

Macユーザーの多くは、バージョン管理ツールである rbenv を利用してRubyをインストールしています。
rbenvを使っている場合、以下の手順で新しいバージョンを追加・適用します。

まずは、rbenv自体を最新化して、インストール可能なRubyのバージョンリストを更新しましょう。

# Homebrewを使っている場合
brew update
brew upgrade rbenv ruby-build

# rbenvでインストール可能なバージョンを確認
rbenv install --list

Homebrewを更新し、ruby-build(Rubyをビルドするプラグイン)を最新にすることで、最新のRubyバージョンがリストに表示されるようになります。

次に、目的のバージョンをインストールし、グローバル(全体)またはローカル(特定プロジェクト)に設定します。

# 例:Ruby 3.x.x をインストール
rbenv install 3.4.1

# インストールしたバージョンを全体で使うように設定
rbenv global 3.4.1

# バージョンが切り替わったか確認
ruby -v

rbenv install で新しいバージョンをコンパイル・インストールします。

その後、rbenv global でPC全体で使用するデフォルトのバージョンを切り替えます。

特定のディレクトリだけで使いたい場合は rbenv local 3.4.1 を使用してください。

WindowsでRubyInstallerを使ってアップデートする

Windows環境では、「RubyInstaller」を使用するのが一般的です。

既存のRubyをアップデートするというよりは、新しいバージョンのインストーラーをダウンロードしてインストールし直す形になります。

  1. RubyInstallerの公式サイト(またはGitHub)から、最新版のインストーラー(WITH DEVKIT推奨)をダウンロードします。
  2. インストーラーを実行し、画面の指示に従ってインストールします。
  3. コマンドプロンプトやPowerShellで ruby -v を実行し、バージョンが更新されたことを確認します。

なお現在では、Windows上で本格的にRuby開発を行う場合、WSL2 (Windows Subsystem for Linux) を導入し、その上のLinux環境で rbenv を使ってバージョン管理を行うのがデファクトスタンダードとなっています。

複数のバージョンを頻繁に切り替える必要がある場合は、WSL2の導入を検討してください。

Ubuntu(Linux)でアップデートする

UbuntuなどのLinux環境でも、開発用途であれば rbenv の使用が推奨されますが、パッケージマネージャー(apt)で管理している場合は以下のコマンドで更新します。

sudo apt update
sudo apt upgrade ruby-full

ただし、aptのリポジトリに含まれるRubyは最新版ではないことが多いです。

最新の安定版を使いたい場合は、Mac同様に rbenvrvm などのバージョン管理ツールを導入することをおすすめします。

GemやBundlerなどの周辺ツールをアップデートする

Ruby本体だけでなく、ライブラリ管理ツールであるRubyGemsやBundlerも定期的にアップデートする必要があります。

古いバージョンのままだと、新しいライブラリがインストールできないエラーが発生することがあります。

RubyGemsとBundlerの更新コマンド

# RubyGems(gemコマンド自体)のアップデート
gem update --system

# Bundlerのアップデート
gem install bundler

gem update --system は、パッケージ管理システムであるRubyGems自体を最新にします。

Bundlerに関しては、gem update bundler ではなく、再度 gem install bundler を実行して最新版を入れるのが一般的です。

プロジェクト内のGemを一括アップデートする

Railsプロジェクトなどで Gemfile に記述されたライブラリを更新したい場合は、以下のコマンドを使用します。

# Gemfile.lockの内容を更新してGemをアップデート
bundle update

bundle update を実行すると、Gemfile の指定範囲内で可能な限り最新のバージョンにGemを更新し、Gemfile.lock を書き換えます。

依存関係が崩れる可能性があるため、開発環境で動作確認をしっかり行ってから本番環境に適用しましょう。

【Ruby入門】ハッシュ(Hash)のupdateメソッド

ここからは、プログラミングコードとしての「update」について解説します。

Rubyのデータ構造である「ハッシュ(Hash)」には、他のハッシュの内容を結合して更新する update メソッドが存在します。

Hash#update の基本的な使い方

update メソッドは、引数で渡されたハッシュの内容で、元のハッシュを上書き(マージ)します。

なお、merge! メソッドは update のエイリアス(別名)であり、同じ動作をします。

# ベースとなるハッシュ
user = { name: "Tanaka", age: 25 }

# 更新用データ
new_data = { age: 26, city: "Tokyo" }

# userハッシュを更新する(破壊的変更)
user.update(new_data)
# 実務ではエイリアスの merge! が好まれることが多い
# user.merge!(new_data)

puts user

実行結果

{:name=>"Tanaka", :age=>26, :city=>"Tokyo"}

user ハッシュに対し、new_data の内容がマージされました。

キー :age は重複しているため、引数である new_data の値(26)で上書きされます。

キー :city は元になかったため、新しく追加されます。

この操作は元の user オブジェクト自体を変更する「破壊的メソッド」である点に注意してください。

また、Railsの ActiveRecord#update と名前が被るため、Rubyコミュニティでは混同を避けるために merge! を使うことが好まれる傾向にあります。

【Rails】ActiveRecordのupdateメソッドとupdate_allの違い

Ruby on Railsでの開発において、データベースのレコードを更新する際にも update メソッドが頻繁に使われます。

単一のレコードを更新する場合と、複数のレコードを一括更新する場合でメソッドを使い分ける必要があります。

単一レコードを更新する update

特定のモデルオブジェクト(1行分のデータ)に対して、値を変更して保存するには update を使います。

# IDが1のユーザーを取得
user = User.find(1)

# 名前とメールアドレスを更新
# 成功すればtrue、失敗すればfalseを返す
if user.update(name: "Suzuki", email: "suzuki@example.com")
  puts "更新成功"
else
  puts "更新失敗"
end

update メソッドは、指定されたカラムの値を変更し、自動的にデータベースへの SAVE(コミット)まで行います。

バリデーション(入力チェック)が実行され、エラーがある場合は更新されずに false が返ります。

なお、以前使われていた update_attributes は現在非推奨(または削除)となっているため、必ず update を使用してください。

複数レコードを一括更新する update_all

条件に一致するすべてのレコードを一度に書き換えたい場合は、update_all を使用します。

# 30歳以上のユーザーをすべて「プレミアム会員」にする
# update_all(カラム名: 値)
User.where("age >= ?", 30).update_all(plan: "premium")

update_all は、発行されるSQL(UPDATE文)によって直接データベースを書き換えます。

非常に高速ですが、バリデーションやコールバック(before_saveなど)が実行されないという重要な特徴があります。

データの整合性を保つため、使用する際は慎重に行う必要があります。

Rubyのスキルを活かして年収を上げる方法

以上、RubyにおけるMac・Winでのバージョン更新からRailsのupdateメソッドなどについて解説してきました。

なお、Rubyのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。

Rubyエンジニアの年収や単価は高い傾向にあるため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。

なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。

今すぐ転職する気がなくとも、とりあえず転職エージェントに無料登録しておくだけで、スカウトが届いたり、思わぬ好待遇の求人情報が送られてきたりするというメリットがあります。

併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなRubyの案件を探しやすくなります。

転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。