"$0 == __FILE__"やshift() について

$0
Rubyコマンドのコマンドライン引数で指定されたファイル名を格納した特殊変数
__FILE__
実行中のスクリプトファイルのファイル名を格納する特殊変数


if $0 == __FILE__の条件式を用いた場合、実行中のプログラムがコマンドライン引数で指定された時に真になる。偽であれば、if内は実行されず、このプログラムはライブラリとして使用される。

def func()
#ライブラリとして実行される
end

puts("hello")
if $0 == __FILE__
  puts("実行中")
end

shift()

配列の先頭を取り除いて、それを返す。残りの要素は元の配列に格納されたままになっているが、先頭の要素はない。

irb(main):004:0> a = [3, "aa", "bb"]
=> [3, "aa", "bb"]
irb(main):005:0> p a.shift()
3
=> 3
irb(main):006:0> a
=> ["aa", "bb"]