2009-01-06
■[Ruby]irbとscript/consoleの超便利なTips
これは便利だと思います。
Wirble: colors
Wirbleをインストールします。
% sudo gem install wirble
~/.irbrcに下のコードを書きます。
require 'rubygems' require 'wirble' Wirble.init Wirble.colorize
Wirble: history
irbは、コマンドの履歴が残ります。[↑]や[↓]、[control] + [p]や[control] + [n]で履歴を見ることができます。しかし、いったんirbを終了すると、履歴がクリアされてしまいます。
Wirbleをインストールしておくと、履歴がクリアされません。再度irbを起動すると、前回の履歴を使うことができます。
Wirble: auto-completion
Wirbleは自動補完機能も提供してくれます。。
>> un_momento = "Spanish for like, 'hold the phone!'" => "Spanish for like, 'hold the phone!'"
ここで、"un"とタイプして、[tab]キーを押します。
>> un un_momento undef unless untaint untrace_var until
これは便利。
Local methods
~/.irbrcに下のコードを書きます。
# Easily print methods local to an object's class class Object def local_methods (methods - Object.instance_methods).sort end end
そうすると、local_methodsメソッドが使えるようになります。
>> class BasketballPlayer >> attr_accessor :name >> ?> def champion? >> name == "Kevin Garnett" >> end >> end => nil >> kevin_garnett = BasketballPlayer.new => #<BasketballPlayer:0x11988f8> >> kevin_garnett.name = "Kevin Garnett" => "Kevin Garnett" >> kevin_garnett.champion? => true >> kevin_garnett.local_methods => ["champion?", "name", "name="]
.irbrcって、普通にRubyのコードが書けるんですね。
Aliases
alias q exit
"exit"の代わりに"q"とタイプすると、irbを終了します。Vimっぽい。
Create test fixtures for a third party service
例えば、FlickerのAPIを使うクライアントを作ったとき。
FlickrClient.search("Bruce Springsteen")
テストケースが書けませんよね。
そこで、script/consoleに入って、データをyamlに変換します。それを、ファイルにダンプ。
yaml = FlickrClient.search("Bruce Springsteen").to_yaml File.open("test/fixtures/flickr/springsteen.yml", "w") { |file| file << yaml }
test_helper.rbに下のコードを書いておきます。。
def load_yaml_fixture(path) absolute_path = File.join(RAILS_ROOT, "test", "fixtures", path) YAML::load_file absolute_path end
呼び出し。
load_yaml_fixture("springsteen.yml")
このパターンは、サードパーティのサービスにアクセスするクライアントのテストに使えます。
Print SQL to standard out
script/consoleでデバッグする時に、メソッドが生成するSQL文を表示することができます。
~/.irbrcに下のコードを書きます。
# Log to STDOUT if in Rails if ENV.include?('RAILS_ENV') && !Object.const_defined?('RAILS_DEFAULT_LOGGER') require 'logger' RAILS_DEFAULT_LOGGER = Logger.new(STDOUT) end
こんなカンジ。
>> videos = Video.limited(3) Video Load (0.4ms) SELECT * FROM `videos` LIMIT 3 => [#<Video id: 1, ...>]
これは便利。
pp
require 'pp'
イイカンジにフォーマットしてくれます。特にArrayやActiveRecordオブジェクトのときに便利。
>> pp videos [#<Video id: 1, youtube_id: "TcMklv40YMY", name: "Merb, Rubinius and the Engine Yard Stack", upload_time: nil, view_count: 6171, description: "Google Tech Talks\nOctober 20, 2008\n\nABSTRACT\n\nIn th...", created_at: "2008-12-21 00:32:33", updated_at: "2008-12-21 00:32:33">, #<Video id: 2, youtube_id: "JySmT-dGOj0", name: "MERB SPORTS Team-Vorstellung 2008", upload_time: nil, view_count: 495, description: "MERB SPORTS stellt sich für die VDRM-Saison 2008 v...", created_at: "2008-12-21 00:32:33", updated_at: "2008-12-21 00:32:33">, #<Video id: 3, youtube_id: "6bc-FNNWIsM", name: "Merb && Moi", upload_time: nil, view_count: 58, description: "Amusing yes?", created_at: "2008-12-21 00:32:33", updated_at: "2008-12-21 00:32:33">]
Wirble便利ですね。あと、.irbrcにRubyのコードを書けるというのが大発見。これは便利。
Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
- 作者: 原悠
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2008/12/20
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 129回
- この商品を含むブログ (72件) を見る
実践 Rails ―強力なWebアプリケーションをすばやく構築するテクニック
- 作者: Brad Ediger,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/10/27
- メディア: 大型本
- 購入: 6人 クリック: 73回
- この商品を含むブログ (42件) を見る
- 30 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP251JP255&q=Vista+高速化
- 20 http://www.google.co.jp/search?hl=ja&q=vista+高速化&lr=&aq=0&oq=VISTA
- 16 http://www.google.co.jp/search?q=vista+高速化&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 15 http://www.google.co.jp/search?sourceid=navclient&aq=t&hl=ja&ie=UTF-8&rlz=1T4SNYL_jaJP277JP308&q=vista+高速化
- 12 http://newsing.jp/entry?url=byokan-sunday.haru.gs/2007/08/vista10.html
- 9 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=ZJr&q=Ruby+on+Rails が動作するサーバ&btnG=検索&lr=lang_ja
- 8 http://reader.livedoor.com/reader/
- 7 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=qAX&sa=X&oi=spell&resnum=0&ct=result&cd=1&q=macbook+paper&spell=1
- 6 http://www.google.co.jp/search?sourceid=navclient&aq=h0&oq=&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP307JP307&q=vista+高速化
- 5 http://b.hatena.ne.jp/entry/http://japanese.engadget.com/2009/01/05/macbook-wheel/



