Hatena::ブログ(Diary)

このブログは証明できない。

2009-01-06

[]irbscript/consoleの超便利なTips

これは便利だと思います。


Wirble: colors

irbシンタックスハイライト


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

irbでは、エイリアスを設定することができます。

alias q exit

"exit"の代わりに"q"とタイプすると、irbを終了します。Vimっぽい。


Create test fixtures for a third party service

例えば、FlickerAPIを使うクライアントを作ったとき。

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&#252;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~

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証