しまもん 

モンスターラボ島根開発拠点のブログ

【今日のgem】手軽にエラーページを構築できる「rambulance」

ぐっち ・2015-06-02

例外をキャッチして、404エラーや500エラーページを表示できるGemです。 rescue_fromでキャッチできない例外にも対応できるのが助かります

yuki24/rambulance

# インストール
gem 'rambulance'
# エラーページの雛形を作成してくれます
rails g rambulance:install


# app/views/errors/not_found.html.erbなど、viewファイルが作成されます

設定ファイルに、キャッチしたい例外と、ステータスコードを記述します

# config/initializers/rambulance.rb
config.rescue_responses = {
  "ActiveRecord::RecordNotUnique" => :unprocessable_entity,
  "CanCan::AccessDenied"          => :forbidden,
  "YourCustomException"           => :not_found
}

これで、エラーに対応したapp/views/errors/にあるページが表示されます。

# 開発環境で確認するとき
# config/environments/development.rb
config.consider_all_requests_local = false

エラー処理は下記のように自分で実装することもできます

# app/handlers/exceptions_app.rb
class ExceptionsApp < Rambulance::ExceptionsApp                                                                                                                                      
  def not_found                                                                                                                                                                      
    head :not_found                                                                                                                                                                  
  end                                                                                                                                                                                

  def internal_server_error                                                                                                                                                          
    head :internal_server_error                                                                                                                                                      
  end                                                                                                                                                                                
end           

| 採用情報

城下町・松江で一旗揚げたいRailsエンジニア絶賛募集中!

Blue