Railsの思想

“Railsという現象”とコミュニティの性質」で、Rails開発者がRailsの思想について語っている部分が興味深い。

以前に書いた記事「Rubyの後方互換性の低さは、Rubyの良さである。」と同じようなものだけど。

「枯れたバージョンのRailsというものはない。昨日のバージョンより今日のバージョンのほうがいいし、今日のものより明日のRailsがいい。だから常に“今”のRailsがベスト」

“Railsという現象”とコミュニティの性質

とか、

「Railsでは新機能が未完成のまま出てくることが多い。攻めのプロダクト。完成していなければ、自分が完成させながら使えばいいじゃんという認識がコミュニティ側にある」

“Railsという現象”とコミュニティの性質

など。

こういう思想を理解せずに使うと、後で痛い目に遭うかもしれない。

HashとActiveSupport::OrderedHashのmergeの挙動が異なる

HashとActiveSupport::OrderedHashのmergeの挙動が異なる。
使用しているRuby on Railsのバージョンは2.3.2。

Hash#mergeの場合

>> ha = {1 => 2, 2 => 4}
=> {1=>2, 2=>4}
>> hb = {2 => 1, 3 => 1}
=> {2=>1, 3=>1}
>> hc = ha.merge(hb) {|key, s_val, o_val| s_val + o_val}
=> {1=>2, 2=>5, 3=>1}

ActiveSupport::OrderedHash#mergeの場合

>> h1
=> #<OrderedHash {1=>2, 2=>4}>
>> h2
=> #<OrderedHash {2=>1, 3=>1}>
>> h3 = h1.merge(h2) {|key, s_val, o_val| s_val + o_val}
=> #<OrderedHash {1=>2, 2=>1, 3=>1}>

ActiveSupport::OrderedHashの場合、mergeの引数のブロックが無視されているようだ。
HashのつもりでOrderedHashを使っていたので、問題に気づくのに時間がかかった。
まさかこんな基本的なところに問題があろうとは。

NetBeans 6.7でRuby on Railsの開発をして気がついたこと

NetBeans 6.7でRuby on Railsの開発をして気がついたこと

UnitTestのテスト結果のウィンドウが豪華になっていた。
エラーがあると、テスト結果のバーがアニメーション表示する。
# RSpecを使っていたので気がつかなかったが、もしかすると昔からかもしれない。
人の目は敵を素早く見つけるために、動いているもにに視点が移動する。
したがって、アニメーション表示するテスト結果のバーに視点が移動してしまい、
集中してソースコードを見ることができない。
アニメーション表示は見た目はいいが使い勝手は悪い。

愛用していたプラグインが動作しない。
NetBeansのRuby用プラグインで紹介したタブ文字をハイライト表示する「Tabs」プラグインと、行末のホワイトスペース(半角空白、全角空白、タブ文字)をハイライト表示して削除してくれる「Trailing Whitespace」プラグインが動作しない。
このプラグインの機能は多くのエディタに搭載されている機能だ。
NetBeansにも標準で搭載してもらいたい。

文字列から正規表現にマッチするすべての文字列を取得する

String#scanを使うと、文字列から正規表現にマッチするすべての文字列を取得することができます。

irb(main):020:0> '1a2b3c4d5e6f7e8h9'.scan(/\d/)
=> ["1", "2", "3", "4", "5", "6", "7", "8", "9"]