alfuken-simple_audit 0.0.1
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/MIT-LICENSE +20 -0
- data/Manifest +23 -0
- data/README +16 -0
- data/Rakefile +50 -0
- data/app/controllers/audits_controller.rb +99 -0
- data/app/helpers/layout_helper.rb +22 -0
- data/app/models/audit.rb +3 -0
- data/app/views/audits/_form.html.erb +20 -0
- data/app/views/audits/edit.html.erb +8 -0
- data/app/views/audits/index.html.erb +44 -0
- data/app/views/audits/new.html.erb +5 -0
- data/app/views/audits/show.html.erb +27 -0
- data/generators/simple_audit/USAGE +8 -0
- data/generators/simple_audit/simple_audit_generator.rb +25 -0
- data/generators/simple_audit/templates/migration.rb +16 -0
- data/init.rb +8 -0
- data/install.rb +4 -0
- data/lib/db/migrate/20090908101900_create_audits.rb +16 -0
- data/lib/simple_audit.rb +67 -0
- data/simple_audit.gemspec +31 -0
- data/tasks/simple_audit_tasks.rake +4 -0
- data/test/simple_audit_test.rb +8 -0
- data/test/test_helper.rb +3 -0
- data/uninstall.rb +1 -0
- metadata +85 -0
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 [name of plugin creator]
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
MIT-LICENSE
|
2
|
+
README
|
3
|
+
Rakefile
|
4
|
+
app/controllers/audits_controller.rb
|
5
|
+
app/helpers/layout_helper.rb
|
6
|
+
app/models/audit.rb
|
7
|
+
app/views/audits/_form.html.erb
|
8
|
+
app/views/audits/edit.html.erb
|
9
|
+
app/views/audits/index.html.erb
|
10
|
+
app/views/audits/new.html.erb
|
11
|
+
app/views/audits/show.html.erb
|
12
|
+
generators/simple_audit/USAGE
|
13
|
+
generators/simple_audit/simple_audit_generator.rb
|
14
|
+
generators/simple_audit/templates/migration.rb
|
15
|
+
init.rb
|
16
|
+
install.rb
|
17
|
+
lib/db/migrate/20090908101900_create_audits.rb
|
18
|
+
lib/simple_audit.rb
|
19
|
+
tasks/simple_audit_tasks.rake
|
20
|
+
test/simple_audit_test.rb
|
21
|
+
test/test_helper.rb
|
22
|
+
uninstall.rb
|
23
|
+
Manifest
|
data/README
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
SimpleAudit
|
2
|
+
===========
|
3
|
+
|
4
|
+
Simple auditing plugin, just testing some stuff.
|
5
|
+
Not for production use!
|
6
|
+
|
7
|
+
|
8
|
+
Example
|
9
|
+
=======
|
10
|
+
|
11
|
+
./script/generate simple_audit install
|
12
|
+
rake db:migrate
|
13
|
+
url localhost:3000/audits
|
14
|
+
|
15
|
+
|
16
|
+
Copyright (c) 2009 Alfuken, released under the MIT license
|
data/Rakefile
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('simple_audit', '0.0.1') do |p|
|
6
|
+
p.description = "Simple auditing plugin."
|
7
|
+
p.url = "http://github.com/alfuken/"
|
8
|
+
p.author = "Alfuken"
|
9
|
+
p.email = "alfuken@gmail.com"
|
10
|
+
p.development_dependencies = []
|
11
|
+
end
|
12
|
+
|
13
|
+
Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
|
14
|
+
|
15
|
+
# ---------------------------------------------
|
16
|
+
# require 'rubygems'
|
17
|
+
# require 'rake'
|
18
|
+
#
|
19
|
+
# PKG_FILES = FileList[
|
20
|
+
# '[a-zA-Z]*',
|
21
|
+
# 'app/**/*',
|
22
|
+
# 'app/**/**/*',
|
23
|
+
# 'generators/**/*',
|
24
|
+
# 'generators/**/**/*',
|
25
|
+
# 'lib/*',
|
26
|
+
# 'lib/**/*',
|
27
|
+
# 'lib/**/**/*',
|
28
|
+
# # 'rails/**/*',
|
29
|
+
# 'tasks/**/*',
|
30
|
+
# # 'test/**/*'
|
31
|
+
# ]
|
32
|
+
#
|
33
|
+
# spec = Gem::Specification.new do |s|
|
34
|
+
# s.name = "alfuken-simple_audit"
|
35
|
+
# s.version = "0.0.1"
|
36
|
+
# s.author = "Alfuken"
|
37
|
+
# s.email = "alfuken@gmail.com"
|
38
|
+
# s.homepage = "http://github.com/alfuken/"
|
39
|
+
# s.platform = Gem::Platform::RUBY
|
40
|
+
# s.summary = "Simple auditing plugin."
|
41
|
+
# s.files = PKG_FILES.to_a
|
42
|
+
# s.require_path = "lib"
|
43
|
+
# s.has_rdoc = false
|
44
|
+
# s.extra_rdoc_files = ["README"]
|
45
|
+
# end
|
46
|
+
#
|
47
|
+
# desc 'Turn this plugin into a gem.'
|
48
|
+
# Rake::GemPackageTask.new(spec) do |pkg|
|
49
|
+
# pkg.gem_spec = spec
|
50
|
+
# end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
class AuditsController < ApplicationController
|
2
|
+
unloadable
|
3
|
+
def index
|
4
|
+
# проверяем, сущевствует ли заданная column, по которой юзер хочет делать сортировку
|
5
|
+
@columns = ActiveRecord::Base.connection.columns('audits').map {|c| c.name}
|
6
|
+
@order_by = @columns.include?(params[:order_by]) ? params[:order_by] : "created_at"
|
7
|
+
|
8
|
+
# выбираем сортировку, опять же чтобы не подсунули "order_by foobar fesc" вместо "desc"
|
9
|
+
@sort_order = ['asc', 'desc'].include?(params[:sort_order]) ? params[:sort_order] : 'desc'
|
10
|
+
|
11
|
+
# Привычка объявлять переменные в некоторых случаях
|
12
|
+
conditions = {}
|
13
|
+
filter_texts = []
|
14
|
+
|
15
|
+
# Запрос фильтрации по ресурсу
|
16
|
+
if params[:resource]
|
17
|
+
filter_texts << "resource “#{params[:resource]}”"
|
18
|
+
conditions.merge!({:resource => params[:resource] })
|
19
|
+
end
|
20
|
+
|
21
|
+
# Запрос фильтрации по пользователю
|
22
|
+
if params[:user_id]
|
23
|
+
filter_texts << "user “#{User.find(params[:user_id]).login}”"
|
24
|
+
conditions.merge!({:user_id => params[:user_id] })
|
25
|
+
end
|
26
|
+
|
27
|
+
# Сообщаем, что включен фильтр
|
28
|
+
@mssg = "Filtered by #{filter_texts.to_sentence}" unless filter_texts.empty?
|
29
|
+
|
30
|
+
# hady thingie: выводим список ресурсов, которые мы можем пофильтровать
|
31
|
+
@resources_to_filter_on = Audit.all(:group => 'resource').map {|r| r.resource}
|
32
|
+
|
33
|
+
# просто фикс для более приятной сортировки (по запрошеному полю + по времени)
|
34
|
+
fix = params[:order_by] == "created_at" ? "" : ", created_at desc"
|
35
|
+
@audits = Audit.find(:all, :conditions => conditions, :order => "#{@order_by} #{@sort_order}#{fix}", :include => :user).paginate :page => params[:page], :per_page => 10
|
36
|
+
|
37
|
+
# тут и далее объяснения излишни
|
38
|
+
respond_to do |format|
|
39
|
+
format.html
|
40
|
+
format.xml { render :xml => @audits }
|
41
|
+
format.js { render :json => @audits }
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
def show
|
47
|
+
@audit = Audit.find(params[:id])
|
48
|
+
respond_to do |format|
|
49
|
+
format.html
|
50
|
+
format.xml { render :xml => @audit }
|
51
|
+
format.js { render :json => @audit }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# @resource_actions = Audit.find_all_by_resource(params[:show_only], :group_by => 'resource').map {|r| r.action}
|
56
|
+
# conds = ["'#{params[:filter_by]}' = ? AND 'action' IN (?)", params[:show_only], @resource_actions ]
|
57
|
+
|
58
|
+
# def new
|
59
|
+
# @audit = Audit.new
|
60
|
+
# end
|
61
|
+
|
62
|
+
# def create
|
63
|
+
# @audit = Audit.new(params[:audit])
|
64
|
+
# if @audit.save
|
65
|
+
# flash[:notice] = "Successfully created audit."
|
66
|
+
# redirect_to @audit
|
67
|
+
# else
|
68
|
+
# render :action => 'new'
|
69
|
+
# end
|
70
|
+
# end
|
71
|
+
|
72
|
+
# def edit
|
73
|
+
# @audit = Audit.find(params[:id])
|
74
|
+
# end
|
75
|
+
|
76
|
+
# def update
|
77
|
+
# @audit = Audit.find(params[:id])
|
78
|
+
# if @audit.update_attributes(params[:audit])
|
79
|
+
# flash[:notice] = "Successfully updated audit."
|
80
|
+
# redirect_to @audit
|
81
|
+
# else
|
82
|
+
# render :action => 'edit'
|
83
|
+
# end
|
84
|
+
# end
|
85
|
+
|
86
|
+
def destroy
|
87
|
+
@audit = Audit.find(params[:id])
|
88
|
+
@audit.destroy
|
89
|
+
respond_to do |format|
|
90
|
+
format.html {
|
91
|
+
flash[:notice] = "Successfully destroyed audit."
|
92
|
+
redirect_to audits_url
|
93
|
+
}
|
94
|
+
format.xml { head :ok }
|
95
|
+
format.js { head :ok }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# These helper methods can be called in your template to set variables to be used in the layout
|
2
|
+
# This module should be included in all views globally,
|
3
|
+
# to do so you may need to add this line to your ApplicationController
|
4
|
+
# helper :layout
|
5
|
+
module LayoutHelper
|
6
|
+
def title(page_title, show_title = true)
|
7
|
+
@content_for_title = page_title.to_s
|
8
|
+
@show_title = show_title
|
9
|
+
end
|
10
|
+
|
11
|
+
def show_title?
|
12
|
+
@show_title
|
13
|
+
end
|
14
|
+
|
15
|
+
def stylesheet(*args)
|
16
|
+
content_for(:head) { stylesheet_link_tag(*args) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def javascript(*args)
|
20
|
+
content_for(:head) { javascript_include_tag(*args) }
|
21
|
+
end
|
22
|
+
end
|
data/app/models/audit.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
<% form_for @audit do |f| %>
|
2
|
+
<%= f.error_messages %>
|
3
|
+
<p>
|
4
|
+
<%= f.label :user_id %><br />
|
5
|
+
<%= f.text_field :user_id %>
|
6
|
+
</p>
|
7
|
+
<p>
|
8
|
+
<%= f.label :resource %><br />
|
9
|
+
<%= f.text_field :resource %>
|
10
|
+
</p>
|
11
|
+
<p>
|
12
|
+
<%= f.label :action %><br />
|
13
|
+
<%= f.text_field :action %>
|
14
|
+
</p>
|
15
|
+
<p>
|
16
|
+
<%= f.label :extra %><br />
|
17
|
+
<%= f.text_area :extra %>
|
18
|
+
</p>
|
19
|
+
<p><%= f.submit "Submit" %></p>
|
20
|
+
<% end %>
|
@@ -0,0 +1,44 @@
|
|
1
|
+
<% @show_title = true; @content_for_title = "Audits" %>
|
2
|
+
|
3
|
+
Resources to filter on: <br />
|
4
|
+
<% for res in @resources_to_filter_on %>
|
5
|
+
<%= link_to res, audits_path(:user_id => params[:user_id], :resource => res) %>
|
6
|
+
<% end %>
|
7
|
+
<br />
|
8
|
+
<br />
|
9
|
+
<% if @mssg %>
|
10
|
+
<%= @mssg %> <span style="font-size:smaller">(<%= link_to "remove filter", audits_path %>)</span><br /><br />
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% sort_icon = params[:sort_order] == "desc" ? " ↓" : " ↑" %>
|
14
|
+
<table id="audits">
|
15
|
+
<tr>
|
16
|
+
<th><%= link_to "Created#{sort_icon if params[:order_by] == "created_at"}", audits_path(:user_id => params[:user_id], :resource => params[:resource], :order_by => "created_at", :sort_order => ((params[:sort_order] == "asc" && params[:order_by] == "created_at") ? "desc" : "asc") ) %></th>
|
17
|
+
<th><%= link_to "User#{sort_icon if params[:order_by] == "user_id"}", audits_path(:user_id => params[:user_id], :resource => params[:resource], :order_by => "user_id", :sort_order => ((params[:sort_order] == "asc" && params[:order_by] == "user_id") ? "desc" : "asc") ) %></th>
|
18
|
+
<th><%= link_to "Resource#{sort_icon if params[:order_by] == "resource"}", audits_path(:user_id => params[:user_id], :resource => params[:resource], :order_by => "resource", :sort_order => ((params[:sort_order] == "asc" && params[:order_by] == "resource") ? "desc" : "asc") ) %></th>
|
19
|
+
<th>Action</th>
|
20
|
+
<th>Extra</th>
|
21
|
+
<th> </th>
|
22
|
+
</tr>
|
23
|
+
<% for audit in @audits %>
|
24
|
+
<tr id="<%= audit.id %>">
|
25
|
+
<td><%= audit.created_at.strftime("%m/%d/%Y %H:%M:%S") %></td>
|
26
|
+
<td><%= link_to audit.user.login, audits_path(:user_id => audit.user_id, :resource => params[:resource]) %></td>
|
27
|
+
<td><%= link_to audit.resource, audits_path(:user_id => params[:user_id], :resource => audit.resource) %></td>
|
28
|
+
<td><%= audit.action %></td>
|
29
|
+
<td><%= audit.extra %></td>
|
30
|
+
<td class="actions"><span><%= link_to "[destroy]", audit, :confirm => 'Are you sure?', :method => :delete, :style=>"font-size:smaller" %> <%= link_to "[show]", audit, :style=>"font-size:smaller" %></span></td>
|
31
|
+
</tr>
|
32
|
+
<% end %>
|
33
|
+
</table>
|
34
|
+
<br />
|
35
|
+
<%= will_paginate @audits %><br />
|
36
|
+
<span style='font-size:smaller'><%= page_entries_info @audits, :entry_name => 'item' %></span>
|
37
|
+
|
38
|
+
<script type="text/javascript" charset="utf-8">
|
39
|
+
$("#audits tr").mouseover(function(){
|
40
|
+
$("#"+this.id+" td.actions span").css('visibility','visible');
|
41
|
+
}).mouseout(function(){
|
42
|
+
$("#"+this.id+" td.actions span").css('visibility','hidden');
|
43
|
+
});
|
44
|
+
</script>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<% @show_title = true; @content_for_title = "Audit" %>
|
2
|
+
|
3
|
+
<p>
|
4
|
+
<strong>User:</strong>
|
5
|
+
<%= User.find(@audit.user_id).login %>
|
6
|
+
</p>
|
7
|
+
<p>
|
8
|
+
<strong>Resource:</strong>
|
9
|
+
<%= @audit.resource %>
|
10
|
+
</p>
|
11
|
+
<p>
|
12
|
+
<strong>Action:</strong>
|
13
|
+
<%= @audit.action %>
|
14
|
+
</p>
|
15
|
+
<p>
|
16
|
+
<strong>Extra:</strong>
|
17
|
+
<%= @audit.extra %>
|
18
|
+
</p>
|
19
|
+
|
20
|
+
<p>
|
21
|
+
<% if request.env["HTTP_REFERER"] %>
|
22
|
+
<%= link_to "<< Back", request.env["HTTP_REFERER"] %> |
|
23
|
+
<% end %>
|
24
|
+
<%= link_to "Destroy", @audit, :confirm => 'Are you sure?', :method => :delete %> |
|
25
|
+
<%= link_to "View All", audits_path %>
|
26
|
+
</p>
|
27
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class SimpleAuditGenerator < Rails::Generator::NamedBase
|
2
|
+
def manifest
|
3
|
+
record do |m|
|
4
|
+
|
5
|
+
m.migration_template 'migration.rb', 'db/migrate', :assigns => {
|
6
|
+
:migration_name => "CreateAudits"
|
7
|
+
}, :migration_file_name => "create_audits"
|
8
|
+
|
9
|
+
sentinel = 'ActionController::Routing::Routes.draw do |map|'
|
10
|
+
logger.route "map.resources :audits"
|
11
|
+
|
12
|
+
gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
|
13
|
+
"#{match}\n map.resources :audits\n map.resources :users, :has_many => 'audits'\n"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def gsub_file(relative_destination, regexp, *args, &block)
|
20
|
+
path = destination_path(relative_destination)
|
21
|
+
content = File.read(path).gsub(regexp, *args, &block)
|
22
|
+
File.open(path, 'wb') { |file| file.write(content) }
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateAudits < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table "audits", :force => true do |t|
|
4
|
+
t.integer "user_id", :default => 0
|
5
|
+
t.string "resource"
|
6
|
+
t.string "action"
|
7
|
+
t.text "extra"
|
8
|
+
t.datetime "created_at"
|
9
|
+
t.datetime "updated_at"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.down
|
14
|
+
drop_table "audits"
|
15
|
+
end
|
16
|
+
end
|
data/init.rb
ADDED
data/install.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
class CreateAudits < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table "audits", :force => true do |t|
|
4
|
+
t.integer "user_id", :default => 0
|
5
|
+
t.string "resource"
|
6
|
+
t.string "action"
|
7
|
+
t.text "extra"
|
8
|
+
t.datetime "created_at"
|
9
|
+
t.datetime "updated_at"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.down
|
14
|
+
drop_table "audits"
|
15
|
+
end
|
16
|
+
end
|
data/lib/simple_audit.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
module SimpleAudit
|
2
|
+
|
3
|
+
# Сделать запись в аудит-лог из контроллера
|
4
|
+
# записи автоматически присваевается user_id и прочие параметры
|
5
|
+
# для дополнительной информации есть поле 'extra'
|
6
|
+
def audit(extra='')
|
7
|
+
return false unless current_user
|
8
|
+
Audit.create(:user_id => current_user.id, :resource => params[:controller], :action => params[:action], :extra => extra)
|
9
|
+
# logger.warn "Eeeei, it works!"
|
10
|
+
end
|
11
|
+
|
12
|
+
module ControllerMethods
|
13
|
+
module Application
|
14
|
+
def self.included(controller)
|
15
|
+
controller.extend ClassMethods
|
16
|
+
controller.class_inheritable_accessor :auditables
|
17
|
+
controller.auditables = []
|
18
|
+
controller.before_filter :audit_actions
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
# подсмотрено у simple_authorization, кажется
|
24
|
+
def audit_actions
|
25
|
+
return if !current_user
|
26
|
+
|
27
|
+
self.class.auditables.each do |actions|
|
28
|
+
options = actions.last.is_a?(Hash) ? actions.last : {}
|
29
|
+
|
30
|
+
next if options[:if] && !options[:if].call(self)
|
31
|
+
next if options[:unless] && options[:unless].call(self)
|
32
|
+
next if options[:only] && !auditable_actions(options[:only]).include?(action_name)
|
33
|
+
next if options[:except] && auditable_actions(options[:except]).include?(action_name)
|
34
|
+
|
35
|
+
audit()
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def auditable_actions(actions)
|
40
|
+
actions = [actions] unless actions.is_a?(Array)
|
41
|
+
actions.map(&:to_s)
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
module ClassMethods
|
46
|
+
|
47
|
+
# before_filter для контроллеров
|
48
|
+
def audit_this(*actions)
|
49
|
+
auditables << actions
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
%w{ models controllers helpers views views/audits }.each do |dir|
|
58
|
+
path = File.join(File.dirname(__FILE__), 'app', dir)
|
59
|
+
$LOAD_PATH << path
|
60
|
+
ActiveSupport::Dependencies.load_paths << path
|
61
|
+
ActiveSupport::Dependencies.load_once_paths.delete(path)
|
62
|
+
end
|
63
|
+
|
64
|
+
# optionally:
|
65
|
+
# Dir.glob(File.join(File.dirname(__FILE__), "db", "migrate", "*")).each do |file|
|
66
|
+
# require file
|
67
|
+
# end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{simple_audit}
|
5
|
+
s.version = "0.0.1"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Alfuken"]
|
9
|
+
s.date = %q{2009-09-11}
|
10
|
+
s.description = %q{Simple auditing plugin.}
|
11
|
+
s.email = %q{alfuken@gmail.com}
|
12
|
+
s.extra_rdoc_files = ["README", "lib/db/migrate/20090908101900_create_audits.rb", "lib/simple_audit.rb", "tasks/simple_audit_tasks.rake"]
|
13
|
+
s.files = ["MIT-LICENSE", "README", "Rakefile", "app/controllers/audits_controller.rb", "app/helpers/layout_helper.rb", "app/models/audit.rb", "app/views/audits/_form.html.erb", "app/views/audits/edit.html.erb", "app/views/audits/index.html.erb", "app/views/audits/new.html.erb", "app/views/audits/show.html.erb", "generators/simple_audit/USAGE", "generators/simple_audit/simple_audit_generator.rb", "generators/simple_audit/templates/migration.rb", "init.rb", "install.rb", "lib/db/migrate/20090908101900_create_audits.rb", "lib/simple_audit.rb", "tasks/simple_audit_tasks.rake", "test/simple_audit_test.rb", "test/test_helper.rb", "uninstall.rb", "Manifest", "simple_audit.gemspec"]
|
14
|
+
s.homepage = %q{http://github.com/alfuken/}
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Simple_audit", "--main", "README"]
|
16
|
+
s.require_paths = ["lib"]
|
17
|
+
s.rubyforge_project = %q{simple_audit}
|
18
|
+
s.rubygems_version = %q{1.3.3}
|
19
|
+
s.summary = %q{Simple auditing plugin.}
|
20
|
+
s.test_files = ["test/simple_audit_test.rb", "test/test_helper.rb"]
|
21
|
+
|
22
|
+
if s.respond_to? :specification_version then
|
23
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
24
|
+
s.specification_version = 3
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
27
|
+
else
|
28
|
+
end
|
29
|
+
else
|
30
|
+
end
|
31
|
+
end
|
data/test/test_helper.rb
ADDED
data/uninstall.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
# Uninstall hook code here
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: alfuken-simple_audit
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alfuken
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-09-11 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Simple auditing plugin.
|
17
|
+
email: alfuken@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README
|
24
|
+
- lib/db/migrate/20090908101900_create_audits.rb
|
25
|
+
- lib/simple_audit.rb
|
26
|
+
- tasks/simple_audit_tasks.rake
|
27
|
+
files:
|
28
|
+
- MIT-LICENSE
|
29
|
+
- README
|
30
|
+
- Rakefile
|
31
|
+
- app/controllers/audits_controller.rb
|
32
|
+
- app/helpers/layout_helper.rb
|
33
|
+
- app/models/audit.rb
|
34
|
+
- app/views/audits/_form.html.erb
|
35
|
+
- app/views/audits/edit.html.erb
|
36
|
+
- app/views/audits/index.html.erb
|
37
|
+
- app/views/audits/new.html.erb
|
38
|
+
- app/views/audits/show.html.erb
|
39
|
+
- generators/simple_audit/USAGE
|
40
|
+
- generators/simple_audit/simple_audit_generator.rb
|
41
|
+
- generators/simple_audit/templates/migration.rb
|
42
|
+
- init.rb
|
43
|
+
- install.rb
|
44
|
+
- lib/db/migrate/20090908101900_create_audits.rb
|
45
|
+
- lib/simple_audit.rb
|
46
|
+
- tasks/simple_audit_tasks.rake
|
47
|
+
- test/simple_audit_test.rb
|
48
|
+
- test/test_helper.rb
|
49
|
+
- uninstall.rb
|
50
|
+
- Manifest
|
51
|
+
- simple_audit.gemspec
|
52
|
+
has_rdoc: false
|
53
|
+
homepage: http://github.com/alfuken/
|
54
|
+
post_install_message:
|
55
|
+
rdoc_options:
|
56
|
+
- --line-numbers
|
57
|
+
- --inline-source
|
58
|
+
- --title
|
59
|
+
- Simple_audit
|
60
|
+
- --main
|
61
|
+
- README
|
62
|
+
require_paths:
|
63
|
+
- lib
|
64
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
version:
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: "1.2"
|
75
|
+
version:
|
76
|
+
requirements: []
|
77
|
+
|
78
|
+
rubyforge_project: simple_audit
|
79
|
+
rubygems_version: 1.2.0
|
80
|
+
signing_key:
|
81
|
+
specification_version: 3
|
82
|
+
summary: Simple auditing plugin.
|
83
|
+
test_files:
|
84
|
+
- test/simple_audit_test.rb
|
85
|
+
- test/test_helper.rb
|