Skip to content

m47h/exception_logger

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exception Logger Engine for Rails 3

This is a fork of the Rails 3 implementation of exception_logger that implements the functionality as a mountable engine.

If you’re looking for the original gem, it is available at github.com/QuBiT/exception_logger.

Installation

Add the gem to your Gemfile:

gem "exception_logger", :git => "git://github.com/alexbevi/exception_logger.git"

Then install and run the necessary migrations. Note that if you’ve already been using the exception_logger gem, there’s no need to follow this step.

rake exception_logger:install:migrations
rake db:migrate

Configuration

Add the following to any controller you want to have logged (or ApplicationController to log all exceptions)

include ExceptionLogger::ExceptionLoggable 
rescue_from Exception, :with => :log_exception_handler

Now, in your routes.rb:

mount ExceptionLogger::Engine => "/exceptions"

Note that “/exceptions” can be anything you like ;)

Recording User Information

If you’d like to record the user that caused the logged exception to be thrown.

in config/application.rb:

config.after_initialize do
  ExceptionLogger::LoggedExceptionsController.class_eval do
    # A string representation of a method or property that contains
    # a reference to the model instance that should be considered
    # the Creator of the exception
    self.creator = "current_user"

    # A method that can be used to return a string value to
    # be used by the views to display the Creator's information
    #
    # Note that the class that :creator belongs to should respond
    # to the method
    self.creator_name = "full_name"
  end
end

Exception Notification

by Email

Rails directly provides a plugin called “Exception Notification” ( github.com/rails/exception_notification ).

Just download the plugin and follow the usage instructions from the README file ( github.com/rails/exception_notification/blob/master/README ) and add this code to one of your initializer files

# Example: put this to config/initializers/exception_notification.rb
Whatever::Application.config.middleware.use ExceptionNotifier,
  :email_prefix => "[Whatever] ",
  :sender_address => %{"notifier" <notifier@example.com>},
  :exception_recipients => %w{exceptions@example.com}

Restart your server and you are done. (Don’t forget to setup your email settings inside your environment files.)

Authentication

If you want, and believe me you want that, you can add the following lines to your environment to enable Authentication

Example uses the declarative_authorization gem

in config/environment/production.rb:

config.after_initialize do
  ExceptionLogger::LoggedExceptionsController.class_eval do
    # include any custom auth modules you need
    # (declarative authorization gem used)
    filter_resource_access
    # just add any code you want to be included in the controller ;)
    # optional, sets the application name for the rss feeds
    self.application_name = "Your Application Name"
  end
end

and (if you use declarative_authorization) add this to your authorization_rules.rb file:

role :admin do
  has_permission_on :exception_logger_logged_exceptions, :to => :manage
  ...

Testing & Development

Testing should always start before the actual development.

You can test this gem very easily. Just run:

rake test:basic

from the console of the cloned github repository of the exception logger.

This rake task will create a rails app inside the test directory called rails_root and will install the exception logger and migrate the database of that application just in time.

The generator which generates the rails app in your test directory will skip over every existing file, hence if you want to customize a file, then just add/create it.

Copyright © 2010 Roland Guem, 2012 Alex Bevilacqua.

See LICENSE for details.

About

An exception_logger mountable engine for Rails 3

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 93.5%
  • JavaScript 6.5%