Rubyの組み込みクラスの一覧を表示してみる
組み込みクラスの一覧を表示してみたいと思い立った。
考えたのは
- Objectの定数一覧取得
- それぞれの定数からクラスを得る
- そのクラスがClassであれば、組み込みクラス
[8] pry(main)> puts Object.constants.select { |x| Kernel.const_get(x).class == Class } Object Module Class BasicObject NilClass Data TrueClass FalseClass Encoding String Symbol Exception SystemExit SignalException Interrupt StandardError TypeError ArgumentError IndexError KeyError RangeError ScriptError SyntaxError LoadError NotImplementedError NameError NoMethodError RuntimeError SecurityError NoMemoryError EncodingError SystemCallError UncaughtThrowError ZeroDivisionError FloatDomainError Numeric Integer Fixnum Float Bignum Array Hash Struct RegexpError Regexp MatchData Range IOError EOFError IO File Dir Time Random Proc LocalJumpError SystemStackError Method UnboundMethod Binding Enumerator StopIteration RubyVM Thread ThreadGroup ThreadError ClosedQueueError Mutex Queue SizedQueue ConditionVariable Fiber FiberError Rational Complex TracePoint StringIO Monitor Delegator SimpleDelegator PrettyPrint PP Pry Slop Tempfile Pathname Insertion SymbolHash OpenStruct OptionParser OptParse Logger StringScanner ScanError => nil
うまくいっている模様。*Errorは例外クラスと
Errorは例外クラス。
普段見慣れないものもかなりある。
Windows版Rubyでp メソッドが文字化けする件の回避(-Uオプション)
いわゆるprintfデバッグに相当する pメソッドなのだが、漢字が正しく表示されない。
例えば
class Tel def initialize(number, name) @number = number @name = name end end kyoto = Tel.new('075', '京都市') p kyoto
を実行すると、ruby 1.9からだったと思うが、
> ruby tel.rb #<Tel:0x2dcb764 @number="075", @name="\u4EAC\u90FD\u5E02">
のように悲しい結果になる。
試行錯誤の結果、どうやらEncoding.default_internal の問題の模様。
実際に
def show_enc %i(default_external default_internal).each do |enc| puts "Encoding.#{enc} => #{Encoding.send(enc).inspect}" end end class Tel def initialize(number, name) @number = number @name = name end end kyoto = Tel.new('075', '京都市') p kyoto show_enc
とすると
> ruby tel.rb #<Tel:0x2dbb79c @number="075", @name="\u4EAC\u90FD\u5E02"> Encoding.default_external => #<Encoding:Windows-31J> Encoding.default_internal => nil
となっている。
そこで、-U オプションを付けてやると
> ruby -U tel.rb #<Tel:0x2f1ab10 @number="075", @name="京都市"> Encoding.default_external => #<Encoding:Windows-31J> Encoding.default_internal => #<Encoding:UTF-8>
と幸せになれるという次第。
環境変数RUBYOPTに-Uを設定しておくと手間もかからない。
ただし、Rubyinstallerのruby.exeだと何故かエラーになることがある。
環境にもよるようだが、ASRだと今のところ問題なし。
陽気なギャングが地球を回す - 伊坂幸太郎
久しぶりの伊坂幸太郎。
各節の最初にある辞書がなかなかおもしろい。
- 作者: 伊坂幸太郎
- 出版社/メーカー: 祥伝社
- 発売日: 2003/02
- メディア: 新書
- 購入: 5人 クリック: 33回
- この商品を含むブログ (354件) を見る
マンガでJavaScriptがわかると思っているのかお前は
良いなこれ。
次が楽しみ。是非続けてほしい。
はてなブックマーク Firefox拡張Add-onサイドバーの問題
はてなブックマークサイドバーを常用しているのだが、いつからかタグをクリックしてもブックマーク一覧が変わらなくなった。ブックーマーク下部の「全体から検索」で掘り起こすことはできるが、使い勝手が頗る悪い。
Firefoxのブックマークに移行を試すが、複数タグの絞り込みができず、こちらもNG。
幸いGithubに載っているので自力解決を試み、なんとか解決。Firefox 45でも問題なく動作している。
未検証にはなるが、こちらのxpiファイルでインストールできるようにはなった。
この結果はHatena Bookmark :: Add-ons for Firefoxのレビューにも書いたのだが、何故かレビューが非表示になってしまっている。自分のプロフィールには残っているが、編集して投稿してもだめ。ひょっとしてリンクがあるとだめ?
一旦削除、リンクなしで新規投稿するとまた表示されるようにはなった。
修正内容は、タグクリックで呼ばれる関数を修正したのだが、
- その関数から他の関数を呼び出すのが失敗している
- 呼び出されるはずの関数から更に別の関数を呼び出しているが、そもそもそれは存在しない(ように見える)
という状態。
README に従ってPull Requestは出しておいたが、採用されるかどうかは不明。
しかし、JavaScriptを触ったのは10年振りくらいだなぁ。