action_logger 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +37 -5
- data/action_logger.gemspec +2 -0
- data/app/helpers/action_logs_helper.rb +5 -0
- data/app/models/action_log.rb +8 -0
- data/lib/action_logger.rb +9 -1
- data/lib/action_logger/engine.rb +5 -0
- data/lib/action_logger/version.rb +1 -1
- data/lib/generators/action_logger/install_generator.rb +21 -0
- data/lib/generators/action_logger/templates/create_action_logs.rb +19 -0
- metadata +30 -3
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ActionLogger
|
2
2
|
|
3
|
-
|
3
|
+
Simple ActiveRecord activity logger. It allows you to log user actions to the database.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -10,15 +10,47 @@ Add this line to your application's Gemfile:
|
|
10
10
|
|
11
11
|
And then execute:
|
12
12
|
|
13
|
-
|
13
|
+
bundle
|
14
14
|
|
15
|
-
|
15
|
+
You'll need to create the migration:
|
16
16
|
|
17
|
-
|
17
|
+
rails generate action_logger:install
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
|
21
|
+
Now you can call `ActionLogger.log` to logs omething to the database. It takes two required paramaters which are `action` and `source`. It also takes an optional attributes hash.
|
22
|
+
|
23
|
+
Example:
|
24
|
+
|
25
|
+
ActionLogger.log 'buy', 'search results'
|
26
|
+
|
27
|
+
This will log a buy action to the database which appeared on the search results. The optional paramters are:
|
28
|
+
|
29
|
+
:sender # Takes any object, e.g. current_user
|
30
|
+
:ip # Allows you to store an ip address
|
31
|
+
:data # Takes a hash with anything you want
|
32
|
+
:admin_id # allows you to set an extra id if for example an admin became a user through a "become" functionality
|
33
|
+
|
34
|
+
There is also a helper you can use in your controllers or views. In your `ApplicationController` add:
|
35
|
+
|
36
|
+
include ActionLogsHelper
|
37
|
+
|
38
|
+
Now you're able to call the `log_action` helper:
|
39
|
+
|
40
|
+
log_action 'buy', 'search results'
|
41
|
+
|
42
|
+
The optional attributes has will set some sane defaults:
|
43
|
+
|
44
|
+
:sender => current_user
|
45
|
+
:ip => request.remote_ip
|
46
|
+
:data => params
|
47
|
+
:admin_id => cirremt_admin_user
|
48
|
+
|
49
|
+
## Warning
|
50
|
+
|
51
|
+
This code is still very basic and has no automated tests. Your production database might not be the best place to log these actions.
|
52
|
+
At some point we might move to Mongo or any other database system if we feel it suits our needs better.
|
53
|
+
Feel free to fork and improve the code.
|
22
54
|
|
23
55
|
## Contributing
|
24
56
|
|
data/action_logger.gemspec
CHANGED
@@ -0,0 +1,8 @@
|
|
1
|
+
class ActionLog < ActiveRecord::Base
|
2
|
+
serialize :data
|
3
|
+
|
4
|
+
def self.log action, source, sender = nil, ip = nil, data = {}, admin_id = nil
|
5
|
+
log = create! action: action, source: source, sender_id: sender.try(:id), sender_type: sender.try(:class).try(:name), ip: ip, data: data, admin_id: (admin_id.present? && admin_id.respond_to?(:id) ? admin_id.id : admin_id)
|
6
|
+
Rails.logger.info log.inspect
|
7
|
+
end
|
8
|
+
end
|
data/lib/action_logger.rb
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
require 'action_logger/version'
|
2
|
+
require 'action_logger/engine'
|
2
3
|
|
3
4
|
module ActionLogger
|
4
|
-
|
5
|
+
def self.log action, source, attrs = {}
|
6
|
+
attrs[:sender] || try(:current_user)
|
7
|
+
attrs[:ip] || request.try(:remote_ip)
|
8
|
+
attrs[:data] || params
|
9
|
+
attrs[:admin_id] || try(:current_admin_user)
|
10
|
+
|
11
|
+
ActionLog.log action, source, attrs[:semder], attrs[:ip], attrs[:data], attrs[:admin_id]
|
12
|
+
end
|
5
13
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'rails/generators/migration'
|
3
|
+
|
4
|
+
module ActionLogger
|
5
|
+
module Generators
|
6
|
+
class InstallGenerator < Rails::Generators::Base
|
7
|
+
include Rails::Generators::Migration
|
8
|
+
|
9
|
+
source_root File.expand_path('../templates', __FILE__)
|
10
|
+
desc 'Generates the ActionLogger migrations'
|
11
|
+
|
12
|
+
def self.next_migration_number path
|
13
|
+
Time.now.utc.strftime '%Y%m%d%H%M%S'
|
14
|
+
end
|
15
|
+
|
16
|
+
def create_migrations
|
17
|
+
migration_template 'create_action_logs.rb', 'db/migrate/create_action_logs.rb'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class CreateActionLogs < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :action_logs do |t|
|
4
|
+
t.integer :sender_id
|
5
|
+
t.string :sender_type
|
6
|
+
t.string :action
|
7
|
+
t.string :source
|
8
|
+
t.string :ip
|
9
|
+
t.text :data
|
10
|
+
t.integer :admin_id
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
add_index :action_logs, [:sender_type, :sender_id]
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.down
|
17
|
+
drop_table :admin_notes
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
13
|
-
dependencies:
|
12
|
+
date: 2012-10-17 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 3.0.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 3.0.0
|
14
30
|
description: Log actions in your Rails app
|
15
31
|
email: gems@jeroenj.be
|
16
32
|
executables: []
|
@@ -23,8 +39,13 @@ files:
|
|
23
39
|
- README.md
|
24
40
|
- Rakefile
|
25
41
|
- action_logger.gemspec
|
42
|
+
- app/helpers/action_logs_helper.rb
|
43
|
+
- app/models/action_log.rb
|
26
44
|
- lib/action_logger.rb
|
45
|
+
- lib/action_logger/engine.rb
|
27
46
|
- lib/action_logger/version.rb
|
47
|
+
- lib/generators/action_logger/install_generator.rb
|
48
|
+
- lib/generators/action_logger/templates/create_action_logs.rb
|
28
49
|
homepage: ''
|
29
50
|
licenses: []
|
30
51
|
post_install_message:
|
@@ -37,12 +58,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
37
58
|
- - ! '>='
|
38
59
|
- !ruby/object:Gem::Version
|
39
60
|
version: '0'
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
hash: 3345375381320870001
|
40
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
65
|
none: false
|
42
66
|
requirements:
|
43
67
|
- - ! '>='
|
44
68
|
- !ruby/object:Gem::Version
|
45
69
|
version: '0'
|
70
|
+
segments:
|
71
|
+
- 0
|
72
|
+
hash: 3345375381320870001
|
46
73
|
requirements: []
|
47
74
|
rubyforge_project:
|
48
75
|
rubygems_version: 1.8.24
|