定数とクラス変数

クラス変数へは、外部から直接代入できません(コンパイル時(?)のエラー)。
定数には、外部から代入ができます。再代入すると警告がでます。

class Rubyco
  Message = "Hello"
  @@message = "hello"
end

# p Rubyco.Message          #=> undefined method `Message' for Rubyco:Class (NoMethodError)
# Rubyco.Message = "Nice!"  #=> undefined method `Message=' for Rubyco:Class (NoMethodError)
p Rubyco::Message
Rubyco::Message = "Good!"
p Rubyco::Message
# p Rubyco.@@message        #=> parse error, unexpected tCVAR

実行結果です。

"Hello"
a.rb:9: warning: already initialized constant Message
"Good!"

疑問:実行時じゃないときはコンパイル時?(眠くて文章がおかしい)