AccessLogging

Log access to models through your controllers.

Requires Rails ~> 3 and Ruby 1.9.2.

Usage

create_table "access_logs" do |t|
  t.integer  "user_id"
  t.string   "user_type",   :limit => 16
  t.string   "user_email",  :limit => 100
  t.string   "ip",          :limit => 15
  t.datetime "created_at"
  t.datetime "updated_at"
  t.string   "user_name",   :limit => 48
  t.string   "path",        :limit => 100
  t.string   "model_type",  :limit => 24
  t.integer  "model_id"
  t.string   "description", :default => ""
  t.string   "verb",        :limit => 24
end

rails generate access_logging:model

class SecretsController < ApplicationController
  log_access_to :secret

  # restful actions: index, show, create, etc.
end

PUT '/sessions/new' # => John Smith signs in

GET '/secrets' # => AccessLog.count += 1; John Smith viewed /secrets
GET '/secrets/1' # => AccessLog.count += 1; John Smith viewed /secrets/1
PUT '/secrets/1' # => AccessLog.count += 1; John Smith updated /secrets/1

etc.

AccessLog.find(2).secret # => <Secret id: 1>

TODO

  • Add generator
  • Log accesses to Redis first, then dump them into the SQL database later.