maeshimaの日記

メモ書きです

2011-05-01から1ヶ月間の記事一覧

ASCIIcasts - CoffeeScript Basics

ASCIIcasts - “Episode 267 - CoffeeScript Basics”気になったとこだけメモ this は @ に置換 三項演算子は if then else に置換が可能 coffee script 中のエラーもコンソールに出力してくれる

retry

retry 使ったことなかったけど、begin ~ rescue でとても使えそう!retry回数制限つきrescueの書き方のメモ - Hello, world! - s21g retry は、ループ以外に後述の rescue 節でも使えます。この場 合は、begin 式を始めからもう一度実行します。retry を使う…

cookieのpathは基本使わない

cookieのpathを利用してURL上のパス毎にcookieを分けるやりかたはセキュリティ的には穴がたくさんある。例えばいずれかのパスで frameset を仕込んでそこから parent.subframe.document.cookie などとすると、別のpathのcookieを読めてしまう。らしい。高木…

RDBMSでNULLは使うな

3値論理を見て。 not in や not exist でNULLを含むレコードを取り扱うと結果が直感とは反したものになる。めちゃめちゃややこしいので、この場合の挙動を覚えるよりも、おとなしくNULLを使わない習慣を付ける方が賢明だと思った。

cloneとdup

普通はdupでいいんじゃないかと思った オブジェクトのコピーについて - おもしろWEBサービス開発日記

メタプログラミングRubyのイディオム

メタプログラミングRubyでは、説明しやすくするために、各テクニックにそれぞれ名前を付けている。最初覚えるのは面倒だけど、覚えるとこれは必要な儀式だったんだなと思える。というわけでメモ。 動的ディスパッチ sendを使って動的にメソッドを利用するこ…

メタプログラミングRuby 1章

あるメソッドが定義されているかどうか調べる hoge.methods.grep /re/ のように、Enumerable#grep を使うと正規表現で調べられるので便利 オープンクラス 標準クラスにメソッド追加すると、既存のメソッドとかち合う危険性があるので、基本的にはよっぽどの…

Rails 3.1 の mass assignment

attr_accessible に :as オプションが付けられるようになったらしい。 class Project < ActiveRecord::Base attr_accessible :name, :as => :admin end のようにすると、 @project.update_attributes(params[:project], :as => :admin) のように、変更側で同…

モデル内で自分のテーブル名を返すメソッド

ActiveRecord::Base#table_name

windowsとlinuxのファイルシステム比較

Geekなぺーじ : Linuxにデフラグが無い理由

RSpecの新しい仕様

最近の記法は結構知らないので復習したい。 最近話題のRSpecのプレゼンの中で知らなかったこと - takihiroの日記

3.1.0.beta1の action_dispatch/url_for.rb のコメントの意訳

ActionDispatch::Routing モデルとかでURLを生成したい場合は、ActionController::UrlForを見るといい。 知ってると思うけど ActionController::Base#url_for はリンクを生成する。link_to や url_for は水面下で ActionController::UrlFor、特に ActionCont…

gem which

インストールしているgemのパスを表示するコマンド 例 gem which rails 参考 requireされいているRubyスクリプトを見つけて編集する方法 - Hello, world! - s21g

html2hamlでerbファイルをhamlに変換するワンライナ

ruby -e 'Dir.glob("**/*.erb").each {|file| system %Q! html2haml #{file} #{file.sub("erb", "haml")}!}'

eval(statements, binding, file, line)

第二引数で束縛を指定できる 第三引数と第四引数で、エラー時のスタックトレースで表示するファイルと行数を指定できる

TOPLEVEL_BINDING

トップレベルのスコープの束縛が入っている組み込み定数。

irbのネスト

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