Rails

ActiveModelLike::ErrorsというPerlモジュールを書いた

通常Model内のエラーをControllerに渡す方法はWAFに組み込まれている。が、薄いWAFだとControllerとViewだけあって、Modelは好きに実装して下さいということが多い。得にPerlは軽量なWAFが多く、Mojoliciousのように薄くはないけどModel層がないものもある。…

ActiveSupport::Notificationsで実行されるSQLを確認する

ActiveRecordなどORMを使用していると、うっかり大量のSQLを発行してしまうことがある。Bulletを使えばN+1のクエリは検知出来るが、そうでないクエリでも肥大化するケースはある。 例えば、集計するような処理を複数のモデルからメソッドを寄せ集めて書いて…

Sidekiqを安全に再起動(終了)したい

バージョン Sidekiq 3.3.0 基本動作 ジョブが走っている状態でSidekiqを終了すると、8秒間(デフォルト)待って終了する。そして、8秒以内に終了しなかったジョブはキューに戻される。 メール送信くらいの軽いジョブであればで問題にはならないが、例えば、AWS…

Docker上でテストを回す

最近RailsやPerlで書いたWebアプリケーションのテストをDocker上で回すようにした。 Docker周りエコシステムは沢山あるけど、まだスタンダードと呼べるものがなく、環境を整えたり、変更点をキャッチアップするコストも馬鹿にならないので、とりあえずdocker…

RSpecでshared_contextを使う

APIのrequest specを書く際、アクセストークンを生成してリクエストヘッダに埋め込んでおくというケースがよくある。そしてリソース単位でファイルを分けるていると、新しいリソースを追加する度に同じ定義をコピペする必要があって辛い。そんなときはshared…

Railsを勉強するために読んだ本(と読んでいる本)

コードは多少書けるけど、Webアプリケーションの開発経験はほとんどない、という前提の下読んだ本の感想をだらだらと。 読んだ本 Learn Ruby on Rails (英語) http://learn-rails.com/learn-ruby-on-rails.html 本当に初心者向けなので、半分くらいは環境構…