1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rubyの組み込み変数まとめ

Posted at

この記事では、プログラミング言語Rubyの組み込み変数がまとめられています。

参考URL

定数

特殊変数

擬似変数

環境変数

定数

この項目では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, mingw32Rubyのみ有効)
PATH Kernel.#systemなどでコマンド実行する検索パス

まとめ

この記事では、Rubyの組み込まれている変数の一覧をざっくり説明してみました。

詳細が知りたい場合は上記の参考URLから飛んでみてみることをお勧めします。

ここでは「こういったものがあるんだよ」ということをこの記事を見た人に知ってもらうことが目的なので、
何かの参考になっていただけたら幸いです。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?