2011/08/20

文の終了はどう判断されるか?

a = 1
if a != 1
  puts "if"
elsif
  nil
  puts "elsif"
end
elseとelsifをtypoしてしまい、はまりました。上記のソースでは何も出力されません。「文が終了していないことがわかると、Rubyは自動的に次行まで読む」というやつでしょうか?

2011/08/09

Net::HTTP.version_1_2は何をしているのか

Ruby 初心者スレッド Part 45より

Net::HTTP の バージョン 1.1 ってのは、太古の昔の ruby 1.6 と呼ばれるものに付属してたやつ
Net::HTTP の バージョン 1.2 は、ruby 1.8 と 1.9 以降の現行に付属してるやつ

ruby 1.6 上で Net::HTTP.version_1_2 と書くと、Net::HTTP の バージョン 1.2 の内部メソッドが使用されるように切り替わる
ruby 1.8 上で Net::HTTP.version_1_1 と書くと、Net::HTTP の バージョン 1.1 の内部メソッドが使用されるように切り替わる

現行の ruby 1.8 と ruby 1.9 において、Net::HTTP.version_1_2 を起動させる必要はまったくない
まあ、誰も解説しないのも良くないんだけど、誰もソース読まないのも正直どうかと思う

Ruby 初心者スレッド Part 45
なんだろうと思ってたんですよね。 なるほど。

2011/08/07

Rubyの組み込み例外クラスを調べる

Rubyの組み込み例外クラスを調べる @ Kwappa研究開発室
こういうことができるのが面白いなぁ。
puts Object.constants.find_all {|c|
  (cc = Object.const_get(c)) &&
  cc.respond_to?(:ancestors) &&
  cc.ancestors.include?(StandardError)
}.sort

2012/01/02: 個人的にはStandardErrorを親クラスに持つより、Exceptionを親クラスに持つものを調べたほうが便利っすね。