週刊Railsウォッチ(20161019)ObjectSpaceモジュール活用法、Capybara統合、コミッターを撮影するソフトほか

※ 「Ruby/Rails界隈ウォッチ」は2016年12月より週刊Railsウォッチにタイトルを改めました。

こんにちは、hachi8833です。もういくつ寝るとRuby 2.4が出るのかな。10月中旬のRailsウォッチをお届けします。

RubyFlow

160928_1638_XvIP4h

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

Ruby Facets第3回では、「JavaScriptベースの関数型言語ElmをRailsに追加してみた」や、「RailsにCapybaraが統合される」といった記事が紹介されています。CapybaraがRailsにmergeされる日も遠くないようです(下図)。

161019_1327_KZmb9L

161019_1947_TeGMYf

Bullshit-Free Review #2

160928_1639_vdl3Ju

ObjectSpaceモジュールでRubyアプリケーションの状態を調べる

Rubyの組み込みライブラリであるObjectSpaceモジュールを使ってRubyプログラムの状態を調べる方法を紹介しています。かなり便利そうです。

プログラム内でオブジェクトの個数を種類ごとに多い順に表示したり(下図)、オブジェクトに直接アクセスしたり、ObjectSpace.memsize_ofでメモリ使用量をチェックしたり、エイリアスメソッドの一覧を取得したりなどのテクニックについて触れています。一部のコード例はIRBやpryでは動かないとコメントにあります。

161019_1120_z4wQ4G

データ量の多いPostgreSQLでロックが発生する操作、しない操作

PostgreSQLでロックによるダウンタイムを引き起こさない操作と、ロックの発生する操作を紹介しています。カラムの追加は原則ロックしないのに、デフォルト値のあるカラムやnon-nullableカラムを追加するとロックするなど、PostgreSQLの挙動がなかなか面白いです。バージョン書いてませんが。

Ruby Weekly

160928_1641_BubfCD

RSpecのmetadataを活用する

RSpecのmetadataを使って、標準の:rack_testに変えてJavaScriptドライバを指定したときのRSpecの振る舞いを自動的に変更する方法や、development/testモードでメールが誤って送信されないようにする方法などを紹介しています。

metadataをいじるとテストへの影響が大きいので、テストで変更した部分はそのままにせず元に戻し、他のテストに影響しないよう注意する必要があるとのことです。著者もmetadataの乱用を避け、gem化してもいいぐらいに一般化できる場合にのみmetadataを追加するようにしているそうです。

英語記事はrosetta.netブログからの転載です。

Ruby trunk

160928_1649_IkaWyb

こちらについては卜部さんの連載記事の方が断然ディープかつまとまってますね。当事者なので当然ですが。

その中で「[#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

160928_1654_q6srdR

JavaScriptなくてもいけんじゃね?

ブラウザCSSの表現力が近年えらく向上しているおかげで、従来JavaScriptで実装していた機能がものによってはCSSだけであっさりできてしまうようになっていることはご存知のとおりです。新し目のプロパティをデモしているサイトなのですが、見せ方がうまいですね。しかも全部CodePen化されているのでその場でお試しもできて便利です。

161019_1812_9s9gBg

ところで例の中でフォームでのバリデーションを扱っているので思い出しましたが、ブラウザ自身によるバリデーションメッセージが、ブラウザごとに微妙に違っているのは割と困ったことですね。特に日本語などのローカライズされたメッセージでものによっては違いが甚だしくなったりします。

Github Trending

160928_1701_Q9dJIU

mroth/lolcommits

Gitにcommitした瞬間にコミッターの顔写真を撮るというRubyプログラムですが、ジョークというより精神的なテロに近いですね。私ならコミット写真晒された瞬間にいさぎよく身を投げます。

68747470733a2f2f6c6f6c636f6d6d6974732e6769746875622e696f2f6173736574732f696d672f67616c6c6572792e6a706567

今週は以上です。

関連記事

Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

この記事の著者

hachi8833

Twitter: @hachi8833、GitHub: @hachi8833 コボラー、ITコンサル、ローカライズ業界、Rails開発を経てTechRachoの編集・記事作成を担当。 これまでにRuby on Rails チュートリアル第2版の半分ほど、Railsガイドの初期翻訳ではほぼすべてを翻訳。その後も折に触れてそれぞれ一部を翻訳。 かと思うと、正規表現の粋を尽くした日本語エラーチェックサービス enno.jpを運営。 実は最近Go言語が好き。 仕事に関係ないすっとこブログ「あけてくれ」は2000年頃から多少の中断をはさんで継続、現在はnote.muに移転。

hachi8833の書いた記事

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ