Tech Racho エンジニアの「?」を「!」に。
  • 開発

週刊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

今週は以上です。

関連記事


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。