ruby
復習用エントリ。tapを使う頻度をもっと上げたいなと思った tappと書いてタププ - うんたらかんたら日記 tapp についてガツンと申し上げたい - ursmの日記
使ってはすぐ存在を忘れてターミナルを使ってしまう…。C-c C-sでバッファが開く。 参考 inf-rubyメモ - odz buffer
gem install capistrano_colors だけで色が付くようになるのかなと思ってたけど違った(当たり前)。全部のプロジェクトの cap コマンドを色つけしたいので ~/.caprc を作って require 'capistrano_colors' としたら色が付きました 参考 stjernstrom/capistran…
キーに対応する値を返す。値がない場合はKeyError。デフォルト値をブロック中に指定できる。 hash = {} hash.fetch(:hoge) {'fuga'} #=> "fuga" hash.fetch(:hoge) #=> KeyError: key not found: :hoge 名前付き引数を使うようなときに使う。
eval instance_evalやclass_evalも、evalと同じように文字列を引数にすることが出来る。 evalとセーフレベルと汚染の考えはワンセット。 Binding TOBLEVEL_BINDING トップレベルのスコープが束縛されている eval で実行時の束縛を指定できる。どっかで使えそ…
カレントクラス カレントクラスはカレントオブジェクト(self)とは別。Rubyのプログラムは常にカレントオブジェクトとカレントクラスを持っている。メソッドを定義したときに、そのメソッドはカレントクラスのインスタンスメソッドになる。 class MyClass def…
似たようなメソッド群をどのようにリファクタリングするかという課題に対して、動的ディスパッチ&動的メソッドと method_missing の二つの手段で解決をはかる話。 ゴーストメソッド作成時の Object#respond_to? と Object#methods method_missing でゴース…
retry 使ったことなかったけど、begin ~ rescue でとても使えそう!retry回数制限つきrescueの書き方のメモ - Hello, world! - s21g retry は、ループ以外に後述の rescue 節でも使えます。この場 合は、begin 式を始めからもう一度実行します。retry を使う…
普通はdupでいいんじゃないかと思った オブジェクトのコピーについて - おもしろWEBサービス開発日記
メタプログラミングRubyでは、説明しやすくするために、各テクニックにそれぞれ名前を付けている。最初覚えるのは面倒だけど、覚えるとこれは必要な儀式だったんだなと思える。というわけでメモ。 動的ディスパッチ sendを使って動的にメソッドを利用するこ…
あるメソッドが定義されているかどうか調べる hoge.methods.grep /re/ のように、Enumerable#grep を使うと正規表現で調べられるので便利 オープンクラス 標準クラスにメソッド追加すると、既存のメソッドとかち合う危険性があるので、基本的にはよっぽどの…
インストールしているgemのパスを表示するコマンド 例 gem which rails 参考 requireされいているRubyスクリプトを見つけて編集する方法 - Hello, world! - s21g
ruby -e 'Dir.glob("**/*.erb").each {|file| system %Q! html2haml #{file} #{file.sub("erb", "haml")}!}'
第二引数で束縛を指定できる 第三引数と第四引数で、エラー時のスタックトレースで表示するファイルと行数を指定できる
トップレベルのスコープの束縛が入っている組み込み定数。
irbの中でirbを使う(ネストする)ことができる。このとき、コンテキストは引数に渡したオブジェクトのコンテキストに変わる。 ruby-1.9.2-p180 :001 > s = "hoge" => "hoge" ruby-1.9.2-p180 :002 > irb s ruby-1.9.2-p180 :002 > reverse => "egoh"
普通にダブルクォートで複数行の文字列を扱うことが出来る。普通複数行にまたがる文字列を使いたいときはヒアドキュメントを使う。 puts "hoge fuga" 実行結果 hoge fuga
rvm wrapperは指定した ruby と gemset でrubyを実行できるコマンドを生成する。passengerとかで使われてる。 rvm wrapper 1.9.2@hoge fuga とすると、1.9.2 で gemset hoge の状態で実行できるコマンドが生成される ./rvm/bin/fuga_ruby ./rvm/bin/fuga_irb…
loadの第二引数にtrueを指定すると、第一引数で指定したファイルの実行時に無名モジュールを作成して定数の衝突を避ける。 requireの違い require は同じファイルは一度だけしかロードしませんが、 load は無条件にロードします。また、require は拡張子 .rb…
メモ Enumerable#cycle object.to_a.cycle と同じ Enumerable#drop オブジェクトの最初の n 個を捨てた配列を返す。非破壊的。Enumerable#firstと対をなすメソッド ary = [1, 2, 3] ary.drop(2) #=> [3] ary #=> [1, 2, 3] Enumerable#drop_while ブロック内…
rubygems.orgに接続せずに、vendor/cacheを使うオプション
なんかこんがらがるのでメモ 正規表現中で参照したい場合は\1,\2,\3... 正規表現後で参照したい場合は$1, $2, $3...
script/console中でyamlに変換してくれるメソッドらしい。script/console - うんたらかんたらRuby - Rubyist
__FILE__ - willnetの日記 - Rubyist
あとでもう一度復習する http://d.hatena.ne.jp/maeshima/20100304/1267696733
YAMLで正規表現 - willnetの日記 - Rubyist
自分のエントリ見て。三角測量って何だっけ?ってなったので元エントリ見直した。TDDでテストを先に書く→ちゃんと実装する前に、「明らかにこれは通るだろ」っていうコードを仮に書いてテストを実行してみることを三角測量と言う。Rspec入門メモ - maeshima…
set_form_dataを使ってエンコードした文字列をセットすると良い [http://d.hatena.ne.jp/POCHI_BLACK/20100226:title=[Ruby] Net::HTTP - pochiのメモ帳]
今まで知らなかった。これは便利!! (1..10).each_slice(3) {|a| p a} # outputs below [1, 2, 3] [4, 5, 6] [7, 8, 9] [10]
正規表現中に"が入るとハイライトがおかしくなるのが嫌で、ひょっとしたらruby-modeを新しくしたらその辺り直ってるんじゃないかと思い入れてみた。EmacsWiki: Ruby Modeにあるようにsubversionのリポジトリをチェックアウトし、load-pathに入れた。でもダメ…