こんにちは、hachi8833です。もういくつ寝るとRuby 2.4が出るのかな。10月中旬の界隈ウォッチをお届けします。
RubyFlow
Mac OS X + lldbでRubyをデバッグする
従来のgdbはバージョンが古かったうえに、MarvericsからOS XのXCodeに含まれなくなったので、XCodeのlldbを使ってRubyプログラムをデバッグする方法を紹介しています。lldbはLLVMベースのデバッガです。
Ruby Facets Episode 3: Bundler 1.13, sources, Elm & Rails, webpack, Rails & Capybara
リンク先Ruby Facetsは英語音声付きのニュースサイトです。5分間と短いので、来年のRubyKaigiに備えてPodCastで英語リスニングを鍛えてみるのもいいかもしれません。
Ruby Facets第3回では、「JavaScriptベースの関数型言語ElmをRailsに追加してみた」や、「RailsにCapybaraが統合される」といった記事が紹介されています。CapybaraがRailsにmergeされる日も遠くないようです(下図)。
Bullshit-Free Review #2
ObjectSpaceモジュールでRubyアプリケーションの状態を調べる
Rubyの組み込みライブラリであるObjectSpaceモジュールを使ってRubyプログラムの状態を調べる方法を紹介しています。かなり便利そうです。
プログラム内でオブジェクトの個数を種類ごとに多い順に表示したり(下図)、オブジェクトに直接アクセスしたり、ObjectSpace.memsize_of
でメモリ使用量をチェックしたり、エイリアスメソッドの一覧を取得したりなどのテクニックについて触れています。一部のコード例はIRBやpryでは動かないとコメントにあります。
データ量の多いPostgreSQLでロックが発生する操作、しない操作
PostgreSQLでロックによるダウンタイムを引き起こさない操作と、ロックの発生する操作を紹介しています。カラムの追加は原則ロックしないのに、デフォルト値のあるカラムやnon-nullableカラムを追加するとロックするなど、PostgreSQLの挙動がなかなか面白いです。バージョン書いてませんが。
Ruby Weekly
RSpecのmetadataを活用する
RSpecのmetadataを使って、標準の:rack_test
に変えてJavaScriptドライバを指定したときのRSpecの振る舞いを自動的に変更する方法や、development/testモードでメールが誤って送信されないようにする方法などを紹介しています。
metadataをいじるとテストへの影響が大きいので、テストで変更した部分はそのままにせず元に戻し、他のテストに影響しないよう注意する必要があるとのことです。著者もmetadataの乱用を避け、gem化してもいいぐらいに一般化できる場合にのみmetadataを追加するようにしているそうです。
英語記事はrosetta.netブログからの転載です。
Ruby trunk
こちらについては卜部さんの連載記事の方が断然ディープかつまとまってますね。当事者なので当然ですが。
その中で「#12353 Regression with Marshal.dump on ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15」がなかなかホラーなのでメモしてみました。
(前略)というわけでMarshal.dumpが壊れないようにと修正が一旦は入ったんですが、それはそれで悪影響が出たので一旦revertされてしまったという現状です。比較的新しいバージョンのrubyとActiveSupportになってれば問題が起きない現状になっていますが、特定の組み合わせでは問題が継続中のようです。
最近のruby-core (2016年9月)より
Hacker News
JavaScriptなくてもいけんじゃね?
ブラウザCSSの表現力が近年えらく向上しているおかげで、従来JavaScriptで実装していた機能がものによってはCSSだけであっさりできてしまうようになっていることはご存知のとおりです。新し目のプロパティをデモしているサイトなのですが、見せ方がうまいですね。しかも全部CodePen化されているのでその場でお試しもできて便利です。
ところで例の中でフォームでのバリデーションを扱っているので思い出しましたが、ブラウザ自身によるバリデーションメッセージが、ブラウザごとに微妙に違っているのは割と困ったことですね。特に日本語などのローカライズされたメッセージでものによっては違いが甚だしくなったりします。
Github Trending
mroth/lolcommits
Gitにcommitした瞬間にコミッターの顔写真を撮るというRubyプログラムですが、ジョークというより精神的なテロに近いですね。私ならコミット写真晒された瞬間にいさぎよく身を投げます。
今週は以上です。