行けなかったけれど聞きたかったRails勉強会@東京第22回のacts_as_authenticated話のレポートをYuguiさんが書かれていたので、読みながら気になったところを書き出して、放置してしまっていたメモを大公開。だれかの「なるほど」の種になれば。
Yuguiさんの「acts_as_authenticatedとは」とともに。レポートの詳細っぷりはありがたいです。
2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM
最初の2行はRailsでモデルオブジェクトを編集するときの頻出パターンだね。と、まあ初心者セッションだから、その辺もフォロー。
こういう、教科書に載ってない的な話が聞けるのが勉強会のうれしいところだよなぁ。
2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM
実はRailsのvalidationはActiveRecordで自動生成された属性以外にも使える。その属性がありさえすればよい。
これは覚えておくと得しそう。
AuthenticatedSystem#current_user()
ココ、ぱっとみて:falseってなんだ、と思ったら
2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM
ここで、:falseなんていう変なシンボルを使ってる意味がわかんないよねー、と私と諸橋さんはセッションでぶちぶち言ってたけど、今気がついた。
お、
2007年09月 @ 過去ログ @ ratio – rational – irrational @ IDM
あちこちで@current_user ||=というコードが実行されることになるから、「ログイン状態未知」と「非ログイン状態」を区別する必要がある。ここで@current_userにnilとかfalseを入れておくと本来は「非ログイン状態」であることは既知の筈なのに、毎回ログインを試みて失敗することになり無駄なクエリが走るのだ。それで、「無効値であることが見た目に分かりやすく、かつ、Rubyにとっては真として評価される」値が必要なんだ。
おー!「||=」のためか、なるほど!
AccountController#signup()
beginとendで囲っていない、rescueがこんな風に書けるんだ。
generate authenticatedしたあとに出来たファイルをひとつひとつ眺めてみたところ、
- app/controllers/account_controller.rb
- app/models/user.rb
- lib/authenticated_system.rb
の3つを読めば把握できるみたいだ。まだまだなるほどの連続、楽しい。
[ref.] Acts as Authenticated
OOエンジニアの輪! ~ 第 38 回 笹田 耕一さんの巻 ~
クラスの継承するときには、こんな風に書くんですけど、実は継承元クラス指定の部分には、任意の expression が書けるので、例えば、ここでクラス定義を書くとか。
ΩΩΩ < ナ、ナンダッテー!!
inh_test.rb
1 class Foo
2 def hoge
3 puts 'Yes!'
4 end
5 end
6
7 class Bar < Foo; end
8
9 Bar.new.hoge #=> Yes!
inh_test2.rb
1 class Bar < (class Foo; def hoge; puts 'Yes!'; end; end); end
2
3 Bar.new.hoge #=> inh_test2.rb:1: superclass must be a Class (NilClass given) (TypeError)
あれ、ちがうのか。
たぶん実際に使うことはないんだろうけど、どんなソースなのか気になる。
お客様の中でこのソースをご存じの方は居られませんかー?
居られませんかー?
[ruby-list:20222] Re: while TRUE とloop の違いを教えてください
制御構造であるwhileとイテレータであるloopの間の本質的な違い はloopの方はループ本体がブロックである点です。そしてブロック は新たなスコープを導入します。
おー。
# 100で止まる
while true
foo ||= 0; foo += 1; puts foo; break if foo > 99
end
# 止まらない
loop do
foo ||= 0; foo += 1; puts foo; break if foo > 99
end
なるほど!
【ITpro Challenge!】「世界を変えられるのはコードだけ」—はてなCTO伊藤直也氏が明かす“ネトゲ廃人”から“なりたかった自分へ”の道のり:ITpro
伊藤氏は29才で,同い年にスーパーハッカーやバイナリアン,自分よりももっとすごい技術者がいるという。「いきなり頂上を見ると萎える。でも,コンプレックスは成長の兆し」
じつは自分も同い年。まさに76世代で萎えることがよくありますが、こういう話が聞けると元気が出ます。
コンプレックスも大事に育てていこう。
Re:「autotestが止まらない。」 – 角谷HTML化計画 (2007-09-12)
$HOME/.autotest
require 'autotest/screen'
Autotest::HOOKS.delete(:interrupt)
これで止まるようになりました。正しい対処かどうかはわかりませんが。
角谷さんにヒントをいただいたので深追いしてみました。
長くなるので、詳細は以下の通り。
続きを読む…
テストケースを増やして、いつの頃からかCtrl+C*2ではautotestが止まってくれなくなった。
カッとなって連打しても全然ダメ。
だから次は絶対止めるために 僕は"kill -9"だけは最後までとっておくー!
[ref.] Railsのテスト環境。
ホールドできないのは致命傷ですよねーそうですよねー。

ちなみにclassicなのはストレージ用途が8割を占めているため(ヲ
- いつの間にか相手の思い通りになってしまっていた。
- 自分で選んだはずなのだけれどなぜか腑に落ちない。
そんなことになってしまうのはどんな原因があるのか、よく使われる手口について著者が実際に仕掛ける側に回った体験に基づいて書かれた本。
たしかに自分がその状況になったらそうするだろうな、と思う場面ばかり。
積ん読になっていた初版を最近やっと消化したと思ったら次が発表されていた。
予約した。カチッ・サー
個人用名刺として欲しいなーと思っていたmooのカードを作りました。

今回は、あまり写真とらないくせに「欲しい」が先行したのでパターンが少ないのですが、次回までにはFlickrにため込もうと思います。
ちなみにケースはフリスクケース・・・ではなく無印の携帯灰皿に。たしかにピッタリだこりゃ。
[ref.] Bouzucast – MOO mini-cardのケースにぴったりな無印良品の携帯灰皿
>> (0..9) === 5
=> true
が出来るから
>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] === 5
=> false
が出来るかと思ったらダメだったという話。
Range#===はinclude?のエイリアスになっているようだけどArrayでは違うみたいだ。へえぇ。
[ref.] Rubyリファレンスマニュアル – Range,
Rubyリファレンスマニュアル – Array