Rubyの組み込み変数まとめ
2022年10月9日に作成 2025年3月3日に更新
Rubyの組み込み変数まとめ
この記事では、プログラミング言語Rubyの組み込み変数がまとめられています。
参考URL
定数
class Object (Ruby 3.4 リファレンスマニュアル)
全てのクラスのスーパークラス。
オブジェクトの一般的な振舞いを定義します。
特殊変数
module Kernel (Ruby 3.4 リファレンスマニュアル)
全てのクラスから参照できるメソッドを定義しているモジュール。
[[c:Object]] クラスはこのモジュールをインクルードしています。
擬似変数
変数と定数 (Ruby 3.4 リファレンスマニュアル)
* [[ref:local]]
* [[ref:instance]]
* [[ref:class]]
* [[ref:class_var_scope]]
* [[ref:global]]
* [[ref:pseudo]]
* [[ref:const]]
* [[ref:prio]]
環境変数
環境変数 (Ruby 3.4 リファレンスマニュアル)
Rubyインタプリタは以下の環境変数を参照します。
定数
この項目ではclass Objectで定義されている 定数を紹介します。
ARGF -> Object
引数(なければ標準入力)で構成される仮想ファイル。
ARGV -> Array
Rubyスクリプトに与えられた引数を表す配列。
p ARGV
# $ ruby index.rb hoge bar
# ["hoge", "bar"]
DATA -> File
スクリプトの__END__プログラムの終わり以降をアクセスするFileオブジェクト。
puts DATA.gets
puts DATA.gets
__END__
やっはろー
プログラムはここで終わりです。
# $ ruby index.rb
# やっはろー
# プログラムはここで終わりです。
ENV -> Object
環境変数を表す(擬似)連想配列。
pp ENV
# $ ruby index.rb
# {"HOME" => "/Users/home",
# "LANG" => "ja_JP.UTF-8",
# "LC_TERMINAL" => "iTerm2",
# "PATH" => "/ruby/path",
# "PWD" => "/Users/home/current/directory",
# "SHELL" => "/usr/bin/bash",
# "USER" => "ittokunvim",
# "..." => "..."}
RUBY_COPYRIGHT -> String
Rubyのコピーライトを表す文字列。
puts RUBY_COPYRIGHT
# $ ruby index.rb
# ruby - Copyright (C) 1993-2025 Yukihiro Matsumoto
RUBY_DESCRIPTION -> String
Rubyの詳細を表す文字列。 ruby -vで表示される。
puts RUBY_DESCRIPTION
# $ ruby index.rb
# ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [arm64-darwin24]
RUBY_ENGINE -> String
Ruby処理系実装のバージョンを表す文字列。
puts RUBY_ENGINE
# $ ruby index.rb
# ruby
RUBY_PATCHLEVEL -> String
Rubyのパッチレベルを表すIntegerオブジェクト。
パッチレベルとはRubyの各バージョンに対するバグ修正パッチの適用がカウントされている。
puts RUBY_PATCHLEVEL
# $ ruby index.rb
# 28
RUBY_PLATFORM -> String
プラットフォームを表す文字列。
puts RUBY_PLATFORM
# $ ruby index.rb
# arm64-darwin24
RUBY_RELEASE_DATE -> String
Rubyのリリース日を表す文字列。
puts RUBY_RELEASE_DATE
# $ ruby index.rb
# 2025-02-15
RUBY_REVISION -> String
RubyのGITコミットハッシュを表すStringオブジェクト。
puts RUBY_REVISION
# $ ruby index.rb
# d2930f8e7a5db8a7337fa43370940381b420cc3e
RUBY_VERSION -> String
Rubyのバージョンを表す文字列。
puts RUBY_VERSION
# $ ruby index.rb
# 3.4.2
SCRIPT_LINES__ -> Hash
ソースファイル別にまとめられたソースコードの各行。 この定数はデフォルトでは定義されておらず、この定数がハッシュとして定義された後に設定される。
SCRIPT_LINES__ = {}
require 'English'
pp SCRIPT_LINES__
# $ ruby index.rb
# {"/opt/homebrew/Cellar/ruby/3.4.2/lib/ruby/3.4.0/English.rb" =>
# ["# frozen_string_literal: true\n",
# "# Include the English library file in a Ruby script, and you can\n",
# "# reference the global variables such as <code>$_</code> using less\n",
# "# cryptic names, listed below.\n",
# ...
STDERR -> IO
標準エラー出力。
# 標準エラー出力先をhoge.txtに変更
$stderr = File.open('./hoge.txt', 'w')
puts hoge # エラー
$stderr = STDERR # 元に戻す
# $ ruby index.rb
#
# hoge.txt
# index.rb:2:in '<main>': undefined local variable or method 'hoge' for main (NameError)
#
# puts hoge
# ^^^^
STDIN -> IO
標準入力。
STDOUT -> IO
標準出力。
TOPLEVEL_BINDING
トップレベルでのBindingオブジェクト。
特殊変数
| 特殊変数 | 型 | 説明 |
|---|---|---|
| $! | Exception | nil | 最後に例外が発生した時のExceptionオブジェクト |
| $" | [String] | Kernel.#requireでロードされたファイル名を含む配列 |
| $$ | Integer | 現在実行中のRubyプロセスのプロセスID |
| $& | String | nil | 正規表現でマッチした文字列 |
| $' | String | nil | 正規表現でマッチした文字列より後ろの文字列 |
| $* | String | nil | Rubyスクリプトに与えられた引数を表す配列 |
| $+ | String | nil | 正規表現でマッチした最後の括弧に対応する文字列 |
| $, | String | nil | デフォルトの出力フィールド区切り文字列 |
| $/ | String | nil | 入力レコード区切りを表す文字列 |
| $; | String | nil | String#splitで引数を省略した場合の区切り文字列 |
| $:, $-I | [String] | Rubyライブラリをロードする時の検索パス |
| $-K | object | 通常のグローバル変数、Ruby2.7までは特殊変数 |
| $-W | 0 | 1 | 2 | コマンドラインオプション-W指定時に、引数の値が設定 |
| $-a | bool | 自動splitモードを表すフラグ |
| $-d | bool | true時にインタプリタがデバッグモードになる |
| $-i | String | nil | in-place置き換えモードで用いられる |
| $-l | bool | コマンドラインオプション-l指定時に、trueが設定 |
| $-p | bool | コマンドラインオプション-p指定時に、trueが設定 |
| $-v, $-w | bool | nil | 冗長メッセージフラグ、コマンドラインオプション\vでセット |
| $. | Integer | IOオブジェクトが最後に読んだ行の行番号 |
| $0 | String | 現在実行中のRubyスクリプト名を表す文字列 |
| $1 ~ $11 | String | nil | 正規表現でマッチしたn番目の括弧にマッチした値 |
| $< | IO | 全ての引数または標準入力で構成される仮想ファイル |
| $= | bool | 常に値がfalse |
| $> | object | 標準出力 |
| $? | Process::Status | nil | 最後に終了した子プロセスのステータス |
| $@ | [String] | nil | 最後に例外が発生した時のバックトレース |
| $\ | String | nil | 出力レコード区切りを表す文字列 |
| $_ | String | nil | 最後にKernil.#gets, Kernel.#readlineで読み込んだ文字列 |
| $` | String | nil | 正規表現でマッチした部分より前の文字列 |
| $~ | MatchData | nil | 正規表現でマッチに関するMatchData |
特殊変数その他
| 特殊変数 | 型 | 説明 |
|---|---|---|
| $stdout | object | 標準出力 |
| $FILENAME | String | 現在読み込み中のファイル名 |
| $SAFE | object | 通常のグローバル変数 |
| $stderr | object | 標準エラー出力 |
| $stdin | object | 標準入力 |
同じ意味の特殊変数
| 特殊変数 | 特殊変数 |
|---|---|
| $LOADED_FEATURES | $" |
| $-0 | $/ |
| $-F | $; |
| $LOAD_PATH | $: |
| $-I | $: |
| $KCODE | $-K |
| $DEBUG | $-d |
| $VERBOSE | $-v, $-w |
| $PROGRAM_NAME | $0 |
| $stdout | $> |
擬似変数
擬似変数とは以下のような変数となります。
| 擬似変数 | 説明 |
|---|---|
| self | 現在のメソッドの実行主体 |
| nil | NilClass唯一のインスタンス |
| true | TrueClass唯一のインスタンス |
| false | FalseClass唯一のインスタンス |
| _FILE_ | 現在のソースファイル名 |
| _LINE_ | 現在のソースファイル中の行番号 |
| _ENCODING_ | 現在のソースファイルのスクリプトエンコーディング |
環境変数
Rubyインタプリタは以下の環境変数を参照します。
| 環境変数 | 説明 |
|---|---|
| RUBYOPT | Rubyインタプリタでデフォルトで渡すオプションを指定 |
| RUBYPATH | -Sオプション指定時、一番後ろに検索パスを追加 |
| RUBYLIB | 一番前に検索パスを追加 |
| RUBYSHELL | Kernel.#systemでコマンド実行するシェル(mswin32, mingw32のRubyのみ有効) |
| PATH | Kernel.#systemなどでコマンド実行する検索パス |
まとめ
この記事では、Rubyの組み込まれている変数の一覧をざっくり説明してみました。
詳細が知りたい場合は上記の参考URLから飛んでみてみることをお勧めします。
ここでは「こういったものがあるんだよ」ということをこの記事を見た人に知ってもらうことが目的なので、 何かの参考になっていただけたら幸いです。