ruby

super

オーバーライドしたとき、親クラスのメソッドを呼ぶには super

falseとnil

rubyの「真」は、falseとnil以外 (数値の 0 は true)

フレームとブロック

フレームはオブジェクト(self((メタクラス、クラス/モジュール、インスタンス 'すべてがオブジェクト'))と定義のある場所((self.classとは限らない))cbase)をもつ ブロックは関数本体(body)とローカル変数(scope)と定義の属す場所*1(klass)をもつ フレームが…

setterとローカル変数代入

self.foo = 'hoge' # setterメソッドが呼ばれる foo = 'hoge' # ローカル変数fooへの代入と解釈される

ERb

埋め込まれたコードの直後の改行を抑制するには - をつける。 <% for item in @items -%> foo bar <br/> <% end -%></br/>

load, require, include, extend

Kernel#load 指定したファイルを無条件にロードする。 Kernel#require 1度読んだファイルは2度読みされない。拡張子は、.soまたは.rbのみで、また拡張子は自動補完される。 Module#include クラスにモジュールをMix-in Object#extend オブジェクトの特異クラ…

すべてがオブジェクト

メタクラス モジュール/クラス インスタンス Module, Class module ,class で作り(定義)、定数へ代入(クラス名は定数) Class#new で作り(インスタンス化)、変数へ代入 モジュール クラス インスタンス化 × ○ Mix-in ○ × モジュール (Moduleのインスタンス) …

引数

メソッド呼び出しのとき、最後のパラメータとしてハッシュを指定するときは、中括弧を省略できる メソッド定義のとき、'*'は多重代入のルールに従う 左辺の最後の'*'は、対応する左辺右辺の要素を配列として代入する。対応する要素がなければ、空の配列を代…

WEBrickが異常に遅い

名前解決のせいで遅くなってるっぽい。 do_not_reverse_lookup で回避。 require 'webrick' Socket.do_not_reverse_lookup = true srv = WEBrick::HTTPServer.new({:DocumentRoot => '/home/foo/public/', :BindAddress => '0.0.0.0', :Port => 3000}) trap(…