Hatena::Grouparaistudy

czk-htnの日記

2006-08-20

[] 13. Rubyとその世界 (2)

13.2 プログラムの終了

Rubyのexitは単にプログラムを終了するわけでない

  • OSにステータス値を返す
  • SystemExit例外を発生させる
    • rescueで補足可能
  • いろいろと後処理
    • 登録されている全てのat_exitメソッドを実行
    • オブジェクト・ファイナライザを実行(ObjectSpace.define_finalizer)
exit後の挙動を確認するサンプル

どうやら明示的にexitしなくてもプログラム終了時には処理されるようだ。

#sample02.rb
at_exit { puts "at_exit function1" }
at_exit { puts "at_exit function2" }

a = "string"
ObjectSpace.define_finalizer(a, proc { |id| puts "Finalizer on #{id}" })

begin
  exit
  puts "never get here"
rescue SystemExit
  puts "rescued a SystemExit exception"
end
puts "after begin block"
#sample02.sh
ruby sample02.rb
echo "status: "$?
% sh sample02.sh
rescued a SystemExit exception
after begin block
at_exit function2
at_exit function1
Finalizer on 82464
status: 0

13.3 環境変数

環境変数を書き出す
ENV.each { |key,val| puts "#{key} = #{val}" }

13.4 Rubyモジュール検索方法

% ruby -e 'puts $:'
/opt/local/lib/ruby/site_ruby/1.8
/opt/local/lib/ruby/site_ruby/1.8/powerpc-darwin7.9.0
/opt/local/lib/ruby/site_ruby
/opt/local/lib/ruby/vendor_ruby/1.8
/opt/local/lib/ruby/vendor_ruby/1.8/powerpc-darwin7.9.0
/opt/local/lib/ruby/vendor_ruby
/opt/local/lib/ruby/1.8
/opt/local/lib/ruby/1.8/powerpc-darwin7.9.0
.

13.5 環境構築

コンパイル時の設定をダンプ
require "rbconfig.rb"
include Config
CONFIG.sort.each { |key,val| puts "#{key} = #{val}" }
トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20060820