Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | 事前定義変数 実行環境変数、標準オブジェクト、グローバル定数

概要

事前定義変数について

詳細

Rubyで事前に定義されている定数は以下。

カテゴリ 変数名 内容
実行環境変数 $0 スクリプトファイル名
実行環境変数 $PROGRAM_NAME $0と同じ
実行環境変数 $* 引数の配列
実行環境変数 $" requireによって組み込まれたモジュールのファイル名配列
実行環境変数 $LOADED_FEATURES $"と同じ
実行環境変数 $$ プロセス番号
実行環境変数 $? 最後に実行した子プロセスの終了ステータス
実行環境変数 $: load,requireでロードする際に検索するディレクトリの配列
実行環境変数 $-I $:と同じ
実行環境変数 $LOAD_PATH $:と同じ
実行環境変数 $-a -aオプションが指定されたかどうか
実行環境変数 __callee__ 現在のメソッド
実行環境変数 __method__ __callee__と同じ
実行環境変数 $DEBUG デバッグモードかどうか
実行環境変数 $-d $DEBUGと同じ
実行環境変数 __ENCODING__ エンコード
実行環境変数 __FILE__ 現在のファイル名
実行環境変数 $F -a利用時に分割した各行が入る変数
実行環境変数 $FILENAME 現在の入力ファイル名($<.filenameと同じ)
実行環境変数 $-i -iオプションで呼び出された場合にバックアップファイルの拡張子を取得する
実行環境変数 $-l -lオプション付きで呼び出されたかどうか
実行環境変数 __LINE__ ソースの現在行番号
実行環境変数 $-p -pオプション付きで呼び出されたかどうか
実行環境変数 $SAFE 現在のセーフレベル
実行環境変数 $VERBOSE -v,-w,-Wが指定されているとtrue
実行環境変数 $-v $VERBOSEと同じ
実行環境変数 $-w $VERBOSEと同じ
実行環境変数 $-W -Wオプションで設定された値
標準オブジェクト ARGF $<と同じ
標準オブジェクト ARGV $*と同じ
標準オブジェクト ENV 環境変数を取得する
グローバル変数 DATA __END__以下をファイルとして扱う
グローバル変数 FALSE falseへの参照
グローバル変数 NIL nilへの参照
グローバル変数 RUBY_COPYRIGHT Rubyのコピーライト
グローバル変数 RUBY_DESCRIPTION Rubyインタプリタバージョンとアーキテクチャ
グローバル変数 RUBY_ENGINE Rubyインタプリタ
グローバル変数 RUBY_PATCHLEVEL Rubyインタプリタのパッチレベル
グローバル変数 RUBY_PLATFORM 現在動作しているプラットフォームの識別子
グローバル変数 RUBY_RELEASE_DATE リリース日
グローバル変数 RUBY_REVISION リビジョン
グローバル変数 TRUE trueへの参照

サンプルコード

# encoding: UTF-8
require_relative "../open_classes.rb"
require 'pp'

puts "----------------------------------------------------------"
puts "** runtime test **"
print_eval "puts $0"
print_eval "puts $*"
print_eval "puts $\""
print_eval "puts $$"
print_eval "puts $:"
print_eval "puts $-a"

def hoge
  puts "(puts __callee__) => #{__callee__}"
end
hoge

print_eval "puts $DEBUG"
print_eval "puts __ENCODING__"
puts __FILE__
print_eval "print $F"
print_eval "print $FILENAME"
print_eval "print $-i"
print_eval "print $-l"
puts "(puts __LINE__) #{__LINE__}行目"
print_eval "print $-p"
print_eval "print $SAFE"
print_eval "print $VERBOSE"
print_eval "print $-W"

puts "----------------------------------------------------------"
puts "** standard object test **"
print_eval "print ARGF"
print_eval "print ARGV"
print_eval "print ENV"

puts "----------------------------------------------------------"
puts "** global constants test **"
print_eval "print FALSE"
print_eval "print NIL.class"
print_eval "print RUBY_COPYRIGHT"
print_eval "print RUBY_DESCRIPTION"
print_eval "print RUBY_ENGINE"
print_eval "print RUBY_PATCHLEVEL"
print_eval "print RUBY_PLATFORM"
print_eval "print RUBY_RELEASE_DATE"
print_eval "print RUBY_REVISION"
print_eval "print TRUE"

出力

----------------------------------------------------------
** runtime test **
(puts $0) => C:/xxx/pre_reserve_word2.rb

(puts $*) => 
(puts $") => enumerator.so
C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/encdb.so
C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/shift_jis.so
C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/enc/trans/transdb.so
C:/Ruby193/lib/ruby/1.9.1/rubygems/defaults.rb
C:/Ruby193/lib/ruby/1.9.1/i386-mingw32/rbconfig.rb
C:/Ruby193/lib/ruby/1.9.1/rubygems/deprecate.rb
C:/Ruby193/lib/ruby/1.9.1/rubygems/exceptions.rb
C:/Ruby193/lib/ruby/1.9.1/rubygems/defaults/operating_system.rb
C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb
C:/Ruby193/lib/ruby/1.9.1/rubygems.rb
C:/xxx/ruby/open_classes/object.rb
C:/xxx/ruby/open_classes/string.rb
C:/xxx/ruby/open_classes/open_classes.rb
C:/xxx/mySite/RubySampleCode/open_classes.rb
C:/Ruby193/lib/ruby/1.9.1/prettyprint.rb
C:/Ruby193/lib/ruby/1.9.1/pp.rb

(puts $$) => 5800

(puts $:) => C:/Ruby193/lib/ruby/site_ruby/1.9.1
C:/Ruby193/lib/ruby/site_ruby/1.9.1/i386-msvcrt
C:/Ruby193/lib/ruby/site_ruby
C:/Ruby193/lib/ruby/vendor_ruby/1.9.1
C:/Ruby193/lib/ruby/vendor_ruby/1.9.1/i386-msvcrt
C:/Ruby193/lib/ruby/vendor_ruby
C:/Ruby193/lib/ruby/1.9.1
C:/Ruby193/lib/ruby/1.9.1/i386-mingw32

(puts $-a) => false

(puts __callee__) => hoge
(puts $DEBUG) => false

(puts __ENCODING__) => UTF-8

C:/xxx/pre_reserve_word2.rb
(print $F) => 
(print $FILENAME) => -
(print $-i) => 
(print $-l) => false
(puts __LINE__) 26行目
(print $-p) => false
(print $SAFE) => 0
(print $VERBOSE) => false
(print $-W) => 1
----------------------------------------------------------
** standard object test **
(print ARGF) => ARGF
(print ARGV) => []
(print ENV) => ENV
----------------------------------------------------------
** global constants test **
(print FALSE) => false
(print NIL.class) => NilClass
(print RUBY_COPYRIGHT) => ruby - Copyright (C) 1993-2011 Yukihiro Matsumoto
(print RUBY_DESCRIPTION) => ruby 1.9.3p0 (2011-10-30) [i386-mingw32]
(print RUBY_ENGINE) => ruby
(print RUBY_PATCHLEVEL) => 0
(print RUBY_PLATFORM) => i386-mingw32
(print RUBY_RELEASE_DATE) => 2011-10-30
(print RUBY_REVISION) => 0
(print TRUE) => true