読者です 読者をやめる 読者になる 読者になる

Rails上 で発生したエラーを Idobata に通知するための gem

Rails上で発生したエラーを Idobata に通知する exception_notification-idobata という Gem を作っています(動くけどテスト書いてないというひどいステータス)

追記: テスト書いてリリースしました。

使い方

  • Gemfile
gem 'exception_notification'
gem 'exception_notification-idobata'

以下のコードを enviroments/production.rb 等に配置。

Sample::Application.configure do
  config.middleware.use ExceptionNotification::Rack,
    idobata: {
      url: HOOK_ENDPOINT
    }
end

HOOK_ENDPOINT の部分には Idobata 上で Generic Hook を追加することで生成されるURLを使用します。

あとはエラーが発生するのを待ちます。

通知するエラーの内容

party_foul なんかを参考()にエラーとして出てくる情報、見た目を整えてみました。そして以下が、実際にエラーが発生した時に投稿される内容になります。

f:id:hrysd:20140314202147p:plain

f:id:hrysd:20140314202154p:plain

最後に

もっともっと!細かくエラーを!苦しい!

という方は pullrequest をして頂けると幸いです。

PhantomJS には Function.prototype.bind は無いようでした。

poltergeist 氏が悲鳴をあげたので調べてみたら PhantomJS には Function.prototype.bind が無いようでした。

[bravo:~]> phantomjs 

phantomjs> Function.prototype.bind 
undefined

phantomjs> console.log(typeof Function.prototype.bind);
undefined
undefined

phantomjs> console.log(typeof Function.prototype.apply);
function
undefined

あわせて読みたい

Gentoo で poltergeist の remote debugging が上手く動かなかった話

Capybara の JavaScript driver の poltergeist には remote debugging なるものがあります。

昨日、テストが通らずはまっていた時に remote debugging のことを思い出してやってみるも自分の環境では動かず...

原因

remote debugging を使うには以下のように driver を登録する必要があります。

Capybara.register_driver :poltergeist_debug do |app|
  Capybara::Poltergeist::Driver.new(app, inspector: true)
end

Capybara.javascript_driver = :poltergeist_debug

そして、new に渡す引数が inspector: true の場合 poltergeist は以下の4つのコマンドから立ち上げるブラウザを決めるようです。

BROWSERS = %w(chromium chromium-browser google-chrome open)

参考: https://github.com/jonleighton/poltergeist/blob/master/lib/capybara/poltergeist/inspector.rb

私は Gentoo 上で google-chrome の stable を使っていて、コマンドとしては google-chrome-stable なので上記の BROWSERS の中には当然含まれていません。

解決方法

オプションの inspector には文字列を渡す事ができます。なので今回は自分が使用しているgoogle-chrome-stable を渡すことで事なきをえました。

Capybara::Poltergeist::Driver.new(app, inspector: 'google-chrome-stable')

最後に

最近 chrome のバージョンごと?(stableとかbetaとか)にパッケージがわかれたためこんなハマり方をしたのだと思いつつ、まだ落ちているテストを眺めているのでした。まる