gbdev-acts_as_callback_logger 0.4.1 → 0.4.2
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/Rakefile +1 -30
- data/init.rb +1 -16
- data/lib/callback_logger.rb +6 -98
- data/lib/{acts_as_callback_logger.rb → callback_logger/acts_as_callback_logger.rb} +0 -0
- data/lib/callback_logger/callback_logger.rb +113 -0
- data/lib/{logger_link_to.rb → callback_logger/logger_link_to.rb} +16 -8
- data/spec/acts_as_callback_logger_spec.rb +115 -115
- data/spec/logger_link_to_spec.rb +14 -14
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +9 -19
- data/tasks/acts_as_callback_logger_tasks.rake +139 -4
- metadata +43 -20
data/Rakefile
CHANGED
@@ -1,30 +1 @@
|
|
1
|
-
|
2
|
-
require 'rake/testtask'
|
3
|
-
require 'rake/rdoctask'
|
4
|
-
require 'spec/rake/spectask'
|
5
|
-
|
6
|
-
|
7
|
-
desc 'Test the acts_as_callback_logger plugin.'
|
8
|
-
task :default => :spec
|
9
|
-
|
10
|
-
desc 'Test the acts_as_callback_logger plugin.'
|
11
|
-
Spec::Rake::SpecTask.new(:spec) do |t|
|
12
|
-
t.spec_files = FileList['spec/**/*.rb']
|
13
|
-
# t.fail_on_error = false
|
14
|
-
end
|
15
|
-
|
16
|
-
# Rake::TestTask.new(:test) do |t|
|
17
|
-
# t.libs << 'lib'
|
18
|
-
# t.pattern = 'test/**/*_test.rb'
|
19
|
-
# t.verbose = true
|
20
|
-
# end
|
21
|
-
|
22
|
-
desc 'Generate documentation for the acts_as_callback_logger plugin.'
|
23
|
-
Rake::RDocTask.new(:rdoc) do |rdoc|
|
24
|
-
rdoc.rdoc_dir = 'rdoc'
|
25
|
-
rdoc.title = 'ActsAsCallbackLogger'
|
26
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
27
|
-
rdoc.rdoc_files.include('README')
|
28
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
29
|
-
end
|
30
|
-
|
1
|
+
load 'tasks/acts_as_callback_logger_tasks.rake'
|
data/init.rb
CHANGED
@@ -1,16 +1 @@
|
|
1
|
-
require '
|
2
|
-
require File.dirname(__FILE__) + "/lib/acts_as_callback_logger.rb"
|
3
|
-
require File.dirname(__FILE__) + "/lib/callback_logger.rb"
|
4
|
-
require File.dirname(__FILE__) + "/lib/logger_link_to.rb"
|
5
|
-
|
6
|
-
# ActiveRecord::Base.class_eval do
|
7
|
-
# include GBDev::Acts::CallbackLogger
|
8
|
-
# include GBDev::CallbackLogger
|
9
|
-
# end
|
10
|
-
|
11
|
-
#ActionView::Helpers::AssetTagHelper.class_eval do
|
12
|
-
# ActionView::Helpers::TagHelper.class_eval do
|
13
|
-
# include GBDev::CallbackLogger::HelperMethods
|
14
|
-
# end
|
15
|
-
|
16
|
-
#ActionView::Helpers::FormHelper.send(:include, GBDev::CallbackLogger::HelperMethods)
|
1
|
+
require 'callback_logger'
|
data/lib/callback_logger.rb
CHANGED
@@ -1,99 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'callback_logger/acts_as_callback_logger'
|
2
|
+
require 'callback_logger/callback_logger.rb'
|
3
|
+
require 'callback_logger/logger_link_to.rb'
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
def self.included(mod)
|
7
|
-
mod.extend(ClassMethods)
|
8
|
-
end
|
9
|
-
|
10
|
-
module ClassMethods
|
11
|
-
attr_accessor :callback_logger_text_attr, # The text used to use for this entry. (ie user name). If not set the id will be used.
|
12
|
-
:callback_logger_model, # The model this entry is storing
|
13
|
-
:callback_logger_object_url, # The url to view this object in (ie show or edit view)
|
14
|
-
:callback_logger_only, # Will only add a log entry if these attributes are changed on update
|
15
|
-
:callback_logger_except # Will log all changes except these on update. If -only- is set then -except- will be ignored.
|
16
|
-
|
17
|
-
def log_callbacks(*args)
|
18
|
-
options = {:text => '', :object_url => {}, :aacl_model => 'AppLog', :only => [], :except => []}
|
19
|
-
options.merge!(args.pop) unless args.empty?
|
20
|
-
|
21
|
-
self.callback_logger_text_attr = options.delete(:text).to_sym unless options[:text].blank?
|
22
|
-
self.callback_logger_object_url = options.delete(:object_url)
|
23
|
-
|
24
|
-
mod = options.delete(:aacl_model).titleize.gsub(' ','')
|
25
|
-
mod = ActiveSupport::Inflector.camelize(mod).constantize
|
26
|
-
self.callback_logger_model = mod
|
27
|
-
|
28
|
-
self.callback_logger_only = options.delete(:only)
|
29
|
-
self.callback_logger_except = options.delete(:except)
|
30
|
-
|
31
|
-
extend GBDev::CallbackLogger::SingletonMethods
|
32
|
-
include GBDev::CallbackLogger::InstanceMethods
|
33
|
-
|
34
|
-
class_eval do
|
35
|
-
after_create :log_create
|
36
|
-
after_update :log_update
|
37
|
-
after_destroy :log_destroy
|
38
|
-
end # class_eval
|
39
|
-
end # log_callbacks
|
40
|
-
|
41
|
-
end # ClassMethods
|
42
|
-
|
43
|
-
module SingletonMethods
|
44
|
-
# def some_method
|
45
|
-
# end
|
46
|
-
end # SingletonMethods
|
47
|
-
|
48
|
-
module InstanceMethods
|
49
|
-
|
50
|
-
def log_create
|
51
|
-
data = "id||#{self.id}||#{self.id}|"
|
52
|
-
class_name = self.class.to_s.titleize.downcase
|
53
|
-
msg = "Created #{class_name} (#{text_to_display})"
|
54
|
-
self.class.callback_logger_model.create({:msg => msg, :data => data, :model => self.class.to_s})
|
55
|
-
rescue Exception => msg
|
56
|
-
# Just fail quietly
|
57
|
-
end
|
58
|
-
|
59
|
-
def log_update
|
60
|
-
changes_to_log = self.changes
|
61
|
-
|
62
|
-
if !self.class.callback_logger_only.empty?
|
63
|
-
changes_to_log.delete_if { |key,value| !self.class.callback_logger_only.include?(key.to_sym) }
|
64
|
-
elsif !self.class.callback_logger_except.empty?
|
65
|
-
self.class.callback_logger_except.each { |key| changes_to_log.delete(key.to_s) }
|
66
|
-
end
|
67
|
-
|
68
|
-
data = changes_to_log.keys.collect{ |key| "#{key}||#{self.changes[key][0]}||#{self.changes[key][1]}" }.join('|::|')
|
69
|
-
data = "id||#{self.id}||#{self.id}|::|#{data}" unless data.empty?
|
70
|
-
|
71
|
-
class_name = self.class.to_s.titleize.downcase
|
72
|
-
msg = "Updated #{class_name} (#{text_to_display})"
|
73
|
-
self.class.callback_logger_model.create({:msg => msg, :data => data, :model => self.class.to_s}) unless data.empty?
|
74
|
-
rescue Exception => msg
|
75
|
-
# Just fail quietly
|
76
|
-
end
|
77
|
-
|
78
|
-
def log_destroy
|
79
|
-
data = self.attributes.keys.collect{ |key| "#{key}||#{self.attributes[key]}" }.join('|::|')
|
80
|
-
|
81
|
-
class_name = self.class.to_s.titleize.downcase
|
82
|
-
msg = "Deleted #{class_name} (#{text_to_display})"
|
83
|
-
self.class.callback_logger_model.create({:msg => msg, :data => data, :model => self.class.to_s})
|
84
|
-
rescue Exception => msg
|
85
|
-
# Just fail quietly
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
private
|
90
|
-
|
91
|
-
def text_to_display
|
92
|
-
self.class.callback_logger_text_attr.blank? ? self.id : self.send(self.class.callback_logger_text_attr)
|
93
|
-
end
|
94
|
-
end # InstanceMethods
|
95
|
-
|
96
|
-
end # CallbackLogger
|
97
|
-
end # GBDev
|
98
|
-
|
99
|
-
ActiveRecord::Base.send(:include, GBDev::CallbackLogger)
|
5
|
+
if Object.const_defined?(:Rails) && File.directory?(Rails.root + "/public")
|
6
|
+
ActionView::Helpers::FormHelper.send(:include, GBDev::CallbackLogger::HelperMethods)
|
7
|
+
end
|
File without changes
|
@@ -0,0 +1,113 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
|
3
|
+
module GBDev #:nodoc:
|
4
|
+
module CallbackLogger #:nodoc:
|
5
|
+
|
6
|
+
def self.included(mod)
|
7
|
+
mod.extend(ClassMethods)
|
8
|
+
end
|
9
|
+
|
10
|
+
module ClassMethods
|
11
|
+
attr_accessor :callback_logger_text_attr, # The text used to use for this entry. (ie user name). If not set the id will be used.
|
12
|
+
:callback_logger_model, # The model this entry is storing
|
13
|
+
:callback_logger_object_url, # The url to view this object in (ie show or edit view)
|
14
|
+
:callback_logger_only, # Will only add a log entry if these attributes are changed on update
|
15
|
+
:callback_logger_except # Will log all changes except these on update. If -only- is set then -except- will be ignored.
|
16
|
+
|
17
|
+
def log_callbacks(*args)
|
18
|
+
options = {:text => '', :object_url => {}, :aacl_model => 'AppLog', :only => [], :except => []}
|
19
|
+
options.merge!(args.pop) unless args.empty?
|
20
|
+
|
21
|
+
self.callback_logger_text_attr = options.delete(:text).to_sym unless options[:text].blank?
|
22
|
+
self.callback_logger_object_url = options.delete(:object_url)
|
23
|
+
|
24
|
+
mod = options.delete(:aacl_model).titleize.gsub(' ','')
|
25
|
+
mod = ActiveSupport::Inflector.camelize(mod).constantize
|
26
|
+
self.callback_logger_model = mod
|
27
|
+
|
28
|
+
self.callback_logger_only = options.delete(:only)
|
29
|
+
self.callback_logger_except = options.delete(:except)
|
30
|
+
|
31
|
+
extend GBDev::CallbackLogger::SingletonMethods
|
32
|
+
include GBDev::CallbackLogger::InstanceMethods
|
33
|
+
|
34
|
+
class_eval do
|
35
|
+
before_save :get_association_changes
|
36
|
+
after_create :log_create
|
37
|
+
after_update :log_update
|
38
|
+
after_destroy :log_destroy
|
39
|
+
end # class_eval
|
40
|
+
end # log_callbacks
|
41
|
+
|
42
|
+
end # ClassMethods
|
43
|
+
|
44
|
+
module SingletonMethods
|
45
|
+
# def some_method
|
46
|
+
# end
|
47
|
+
end # SingletonMethods
|
48
|
+
|
49
|
+
module InstanceMethods
|
50
|
+
|
51
|
+
def get_association_changes
|
52
|
+
# debugger
|
53
|
+
# a='CALLBACK LOGGER 1'
|
54
|
+
end
|
55
|
+
|
56
|
+
def log_create
|
57
|
+
data = "id||#{self.id}||#{self.id}|"
|
58
|
+
class_name = self.class.to_s.titleize.downcase
|
59
|
+
msg = "Created #{class_name} (#{text_to_display})"
|
60
|
+
|
61
|
+
# debugger
|
62
|
+
# a='CALLBACK LOGGER 2'
|
63
|
+
|
64
|
+
self.class.callback_logger_model.create({:msg => msg, :data => data, :model => self.class.to_s})
|
65
|
+
rescue Exception => msg
|
66
|
+
# Just fail quietly
|
67
|
+
end
|
68
|
+
|
69
|
+
def log_update
|
70
|
+
changes_to_log = self.changes
|
71
|
+
|
72
|
+
if !self.class.callback_logger_only.empty?
|
73
|
+
changes_to_log.delete_if { |key,value| !self.class.callback_logger_only.include?(key.to_sym) }
|
74
|
+
elsif !self.class.callback_logger_except.empty?
|
75
|
+
self.class.callback_logger_except.each { |key| changes_to_log.delete(key.to_s) }
|
76
|
+
end
|
77
|
+
|
78
|
+
data = changes_to_log.keys.collect{ |key| "#{key}||#{self.changes[key][0]}||#{self.changes[key][1]}" }.join('|::|')
|
79
|
+
data = "id||#{self.id}||#{self.id}|::|#{data}" unless data.empty?
|
80
|
+
|
81
|
+
class_name = self.class.to_s.titleize.downcase
|
82
|
+
msg = "Updated #{class_name} (#{text_to_display})"
|
83
|
+
|
84
|
+
# debugger
|
85
|
+
# a='CALLBACK LOGGER 3'
|
86
|
+
|
87
|
+
self.class.callback_logger_model.create({:msg => msg, :data => data, :model => self.class.to_s}) unless data.empty?
|
88
|
+
rescue Exception => msg
|
89
|
+
# Just fail quietly
|
90
|
+
end
|
91
|
+
|
92
|
+
def log_destroy
|
93
|
+
data = self.attributes.keys.collect{ |key| "#{key}||#{self.attributes[key]}" }.join('|::|')
|
94
|
+
|
95
|
+
class_name = self.class.to_s.titleize.downcase
|
96
|
+
msg = "Deleted #{class_name} (#{text_to_display})"
|
97
|
+
self.class.callback_logger_model.create({:msg => msg, :data => data, :model => self.class.to_s})
|
98
|
+
rescue Exception => msg
|
99
|
+
# Just fail quietly
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
private
|
104
|
+
|
105
|
+
def text_to_display
|
106
|
+
self.class.callback_logger_text_attr.blank? ? self.id : self.send(self.class.callback_logger_text_attr)
|
107
|
+
end
|
108
|
+
end # InstanceMethods
|
109
|
+
|
110
|
+
end # CallbackLogger
|
111
|
+
end # GBDev
|
112
|
+
|
113
|
+
ActiveRecord::Base.send(:include, GBDev::CallbackLogger)
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'rubygems'
|
2
|
-
require '
|
2
|
+
require 'action_pack'
|
3
3
|
#require 'action_view'
|
4
4
|
|
5
|
-
module ActionView::Helpers::AssetTagHelper
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
#module ActionView::Helpers::AssetTagHelper
|
6
|
+
module GBDev #:nodoc:
|
7
|
+
module CallbackLogger #:nodoc:
|
8
|
+
module HelperMethods #:nodoc:
|
9
9
|
|
10
10
|
def callback_logger_link_to(app_log_object)
|
11
11
|
# TODO: add object checker stuff here....
|
@@ -39,11 +39,19 @@ module ActionView::Helpers::AssetTagHelper
|
|
39
39
|
app_log_object.msg.gsub(content, link_to(content, model.callback_logger_object_url))
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
# end
|
42
|
+
end
|
43
|
+
end
|
45
44
|
end
|
45
|
+
#end
|
46
46
|
|
47
47
|
# module ActionView::Helpers::AssetTagHelper
|
48
48
|
# include GBDev::CallbackLogger::HelperMethods
|
49
|
+
# end
|
50
|
+
|
51
|
+
# module ActionView
|
52
|
+
# module Helpers
|
53
|
+
# class FormBuilder
|
54
|
+
# include GBDev::CallbackLogger::HelperMethods
|
55
|
+
# end
|
56
|
+
# end
|
49
57
|
# end
|
@@ -1,115 +1,115 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
1
|
+
#!/usr/bin/env ruby -w
|
2
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), 'spec_helper')
|
3
|
+
|
4
|
+
if Object.const_defined?(:ActiveRecord) and Object.const_defined?(:Mocha) and Object.const_defined?(:Spec)
|
5
|
+
|
6
|
+
class AppLog < ActiveRecord::Base
|
7
|
+
acts_as_callback_logger
|
8
|
+
end
|
9
|
+
|
10
|
+
class Program < ActiveRecord::Base
|
11
|
+
log_callbacks :text => 'name'
|
12
|
+
end
|
13
|
+
|
14
|
+
class GroupType < ActiveRecord::Base
|
15
|
+
log_callbacks :text => 'name'#, :object_url => {:controller => 'clients/charges', :action => 'edit'}
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
describe 'CallbackLogger' do
|
20
|
+
|
21
|
+
before(:each) do
|
22
|
+
build_database_connection
|
23
|
+
InitialSchema.up
|
24
|
+
|
25
|
+
AppLog.delete_all
|
26
|
+
Program.delete_all
|
27
|
+
GroupType.delete_all
|
28
|
+
@program = Program.new({:name => 'Some Program'})
|
29
|
+
@group_type = GroupType.new({:name => 'Some Group Type'})
|
30
|
+
end
|
31
|
+
|
32
|
+
after(:each) do
|
33
|
+
InitialSchema.down
|
34
|
+
end
|
35
|
+
|
36
|
+
describe 'AppLog' do
|
37
|
+
|
38
|
+
it 'should not have any logs in it to start' do
|
39
|
+
AppLog.count.should be_zero
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'should undo the program name change' do
|
43
|
+
@program.save.should be_true
|
44
|
+
program_id = @program.id
|
45
|
+
|
46
|
+
AppLog.count.should == 1
|
47
|
+
msg = "Created program (Some Program)"
|
48
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
49
|
+
|
50
|
+
@program.name = 'Dog Man'
|
51
|
+
@program.save.should be_true
|
52
|
+
AppLog.count.should == 2
|
53
|
+
msg = "Updated program (Dog Man)"
|
54
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
55
|
+
|
56
|
+
app_log = AppLog.find_by_msg(msg)
|
57
|
+
app_log.undo.should be_true
|
58
|
+
app_log.restored_at.should_not be_nil
|
59
|
+
|
60
|
+
program = Program.find(program_id)
|
61
|
+
program.name.should == 'Some Program'
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'should undo the group type deletion' do
|
65
|
+
@group_type.save.should be_true
|
66
|
+
|
67
|
+
group_type_id = @group_type.id
|
68
|
+
|
69
|
+
AppLog.count.should == 1
|
70
|
+
msg = "Created group type (#{@group_type.name})"
|
71
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
72
|
+
|
73
|
+
@group_type.destroy
|
74
|
+
GroupType.count.should == 0
|
75
|
+
msg = "Deleted group type (#{@group_type.name})"
|
76
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
77
|
+
|
78
|
+
app_log = AppLog.find_by_msg("Deleted group type (#{@group_type.name})")
|
79
|
+
app_log.undo.should be_true
|
80
|
+
app_log.restored_at.should_not be_nil
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe 'Models watched' do
|
85
|
+
it 'should add a created, updated and deleted entries to the app_logs table' do
|
86
|
+
@program.save.should be_true
|
87
|
+
program_id = @program.id
|
88
|
+
AppLog.count.should == 1
|
89
|
+
msg = "Created program (Some Program)"
|
90
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
91
|
+
|
92
|
+
@group_type.save.should be_true
|
93
|
+
group_type_id = @group_type.id
|
94
|
+
AppLog.count.should == 2
|
95
|
+
msg = "Created group type (#{@group_type.name})"
|
96
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
97
|
+
|
98
|
+
@program.name = 'Dog Man'
|
99
|
+
@program.save.should be_true
|
100
|
+
AppLog.count.should == 3
|
101
|
+
msg = "Updated program (Dog Man)"
|
102
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
103
|
+
|
104
|
+
@group_type.destroy
|
105
|
+
AppLog.count.should == 4
|
106
|
+
msg = "Deleted group type (#{@group_type.name})"
|
107
|
+
AppLog.count(:conditions => ["msg = ?", msg]).should == 1
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
else
|
114
|
+
$stderr.puts "Warning: ActiveRecord, Spec or Mocha not found -- skipping AAR tests"
|
115
|
+
end
|
data/spec/logger_link_to_spec.rb
CHANGED
@@ -12,11 +12,12 @@ if Object.const_defined?(:ActiveRecord) and Object.const_defined?(:Mocha) and Ob
|
|
12
12
|
end
|
13
13
|
|
14
14
|
class Charge < ActiveRecord::Base
|
15
|
-
log_callbacks :text => 'name'
|
15
|
+
log_callbacks :text => 'name', :object_url => {:controller => 'clients/charges', :action => 'edit'}
|
16
16
|
end
|
17
17
|
|
18
18
|
|
19
19
|
describe 'GBDev::CallbackLogger::HelperMethods' do
|
20
|
+
include GBDev::CallbackLogger::HelperMethods
|
20
21
|
|
21
22
|
before(:each) do
|
22
23
|
build_database_connection
|
@@ -24,31 +25,30 @@ if Object.const_defined?(:ActiveRecord) and Object.const_defined?(:Mocha) and Ob
|
|
24
25
|
end
|
25
26
|
|
26
27
|
after(:each) do
|
27
|
-
build_database_connection
|
28
28
|
InitialSchema.down
|
29
29
|
end
|
30
30
|
|
31
|
-
describe '
|
31
|
+
describe 'callback_logger_link_to' do
|
32
32
|
it "should not be a link since :object_url is not set" do
|
33
33
|
AppLog.delete_all
|
34
34
|
Event.delete_all
|
35
35
|
event = Event.new({:name => 'Some Event'})
|
36
36
|
event.save.should be_true
|
37
37
|
log = AppLog.find(:first)
|
38
|
-
|
38
|
+
callback_logger_link_to(log).should == "Created event (Some Event)"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
42
|
+
describe 'callback_logger_link_to' do
|
43
|
+
it "should build a link in the message between the parentheses" do
|
44
|
+
AppLog.delete_all
|
45
|
+
Charge.delete_all
|
46
|
+
charge = Charge.new({:name => 'Some Charge'})
|
47
|
+
charge.save.should be_true
|
48
|
+
log = AppLog.find(:first)
|
49
|
+
callback_logger_link_to(log).should match(/Created charge \(<a href.*\/clients\/charges\/edit.*>Some Charge<\/a>\)/)
|
50
|
+
end
|
51
|
+
end
|
52
52
|
end
|
53
53
|
|
54
54
|
else
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
CHANGED
@@ -1,45 +1,35 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + "/../lib/")
|
2
|
+
|
3
|
+
require 'callback_logger'
|
4
|
+
|
1
5
|
ENV["RAILS_ENV"] = "test"
|
2
6
|
PLUGIN_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
3
7
|
|
4
8
|
require 'rubygems'
|
5
9
|
require 'ruby-debug'
|
6
|
-
|
10
|
+
|
7
11
|
require 'active_support'
|
12
|
+
require 'action_pack'
|
8
13
|
require 'action_controller'
|
9
14
|
require 'action_view'
|
15
|
+
require 'active_record'
|
16
|
+
|
10
17
|
require 'rexml/document'
|
11
18
|
require 'html/document'
|
12
19
|
require 'mocha'
|
13
20
|
require 'spec'
|
14
21
|
|
15
|
-
require File.join(PLUGIN_ROOT, 'lib/acts_as_callback_logger')
|
16
|
-
require File.join(PLUGIN_ROOT, 'lib/callback_logger')
|
17
|
-
require File.join(PLUGIN_ROOT, 'lib/logger_link_to')
|
18
|
-
|
19
22
|
include ActionView::Helpers::UrlHelper
|
20
23
|
include ActionController::UrlWriter
|
21
24
|
include ActionView::Helpers::AssetTagHelper
|
22
25
|
|
23
|
-
#include GBDev::Acts::CallbackLogger
|
24
|
-
#include GBDev::CallbackLogger
|
25
|
-
#include GBDev::CallbackLogger::HelperMethods
|
26
|
-
|
27
|
-
# config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
|
28
|
-
# ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + '/debug.log')
|
29
|
-
# ActiveRecord::Base.establish_connection(config[ENV['DB'] || 'postgresql'])
|
30
|
-
|
31
26
|
ActionController::UrlWriter.default_url_options = {:host => 'localhost'}
|
32
27
|
ActionController::Routing::Routes.draw do |map|
|
33
28
|
map.connect ':controller/:action/:id'
|
34
29
|
map.connect ':controller/:action/:id.:format'
|
35
30
|
end
|
36
31
|
|
37
|
-
load(File.dirname(__FILE__) + '/schema.rb') if File.exist?(File.dirname(__FILE__) + '/schema.rb')
|
38
|
-
|
39
|
-
#ActionView::Helpers::AssetTagHelper.send :include, GBDev::CallbackLogger::HelperMethods
|
40
|
-
|
41
|
-
|
42
|
-
|
32
|
+
#load(File.dirname(__FILE__) + '/schema.rb') if File.exist?(File.dirname(__FILE__) + '/schema.rb')
|
43
33
|
|
44
34
|
|
45
35
|
class InitialSchema < ActiveRecord::Migration
|
@@ -1,4 +1,139 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rubygems/gem_runner'
|
3
|
+
require 'rake/gempackagetask'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
require 'spec/rake/spectask'
|
6
|
+
|
7
|
+
PROJECT_GEM = 'gbdev-acts_as_callback_logger'
|
8
|
+
PROJECT_GEM_VERSION = '0.4.2'
|
9
|
+
|
10
|
+
|
11
|
+
##############################################
|
12
|
+
# Set the default task
|
13
|
+
##############################################
|
14
|
+
task :default => [:clobber_package, :package]
|
15
|
+
##############################################
|
16
|
+
|
17
|
+
|
18
|
+
##############################################
|
19
|
+
# Build gem release
|
20
|
+
##############################################
|
21
|
+
desc 'Run spec tests and build gem release version'
|
22
|
+
task :release =>[:clean, :package]
|
23
|
+
##############################################
|
24
|
+
|
25
|
+
|
26
|
+
##############################################
|
27
|
+
# Clean up project by remove the package and rdocs
|
28
|
+
##############################################
|
29
|
+
desc 'Calls both clobber_package clobber_rdoc'
|
30
|
+
task :clean => [:clobber_package, :clobber_rdoc]
|
31
|
+
##############################################
|
32
|
+
|
33
|
+
|
34
|
+
##############################################
|
35
|
+
# Build and install/update gem
|
36
|
+
##############################################
|
37
|
+
desc 'Builds the gem and installs or updates the new gem'
|
38
|
+
task :install =>[:uninstall, :clean, :package] do
|
39
|
+
sh "gem install pkg/#{PROJECT_GEM}-#{PROJECT_GEM_VERSION}.gem"
|
40
|
+
end
|
41
|
+
##############################################
|
42
|
+
|
43
|
+
|
44
|
+
##############################################
|
45
|
+
# Build and install/update gem
|
46
|
+
##############################################
|
47
|
+
task :uninstall => [:clean] do
|
48
|
+
begin
|
49
|
+
sh "gem uninstall -a #{PROJECT_GEM}"
|
50
|
+
rescue
|
51
|
+
# Do nothing since it is not installed
|
52
|
+
end
|
53
|
+
end
|
54
|
+
##############################################
|
55
|
+
|
56
|
+
|
57
|
+
##############################################
|
58
|
+
# Build the gem package
|
59
|
+
##############################################
|
60
|
+
gem_spec_file = Gem::Specification.new do |s|
|
61
|
+
s.name = PROJECT_GEM
|
62
|
+
s.version = PROJECT_GEM_VERSION
|
63
|
+
s.platform = Gem::Platform::RUBY
|
64
|
+
#s.date = '2009-01-05'
|
65
|
+
|
66
|
+
s.homepage = 'http://github.com/gbdev/acts_as_callback_logger'
|
67
|
+
s.rubyforge_project = 'Project on www.github.com'
|
68
|
+
s.authors = ['Wes Hays', 'John Dell']
|
69
|
+
s.email = 'gems@gbdev.com'
|
70
|
+
|
71
|
+
s.summary = 'Rails gem/plugin to log callback events (after_create, after_update,
|
72
|
+
after_destroy) for certain models tracking various things that users
|
73
|
+
did within the application.'
|
74
|
+
s.description = 'Rails gem/plugin to log callback events (after_create, after_update,
|
75
|
+
after_destroy) for certain models tracking various things that users
|
76
|
+
did within the application. SEE README FOR MORE INFO.'
|
77
|
+
|
78
|
+
s.add_dependency('rcov','>= 0.8.1')
|
79
|
+
s.add_dependency('diff-lcs', '>= 1.1.2')
|
80
|
+
|
81
|
+
s.require_path = "lib"
|
82
|
+
|
83
|
+
s.files = ['install.rb',
|
84
|
+
'uninstall.rb',
|
85
|
+
'init.rb',
|
86
|
+
'CHANGELOG',
|
87
|
+
'LICENSE',
|
88
|
+
'README',
|
89
|
+
'Rakefile',
|
90
|
+
'tasks/acts_as_callback_logger_tasks.rake'].concat(Dir['lib/**/*.rb'])
|
91
|
+
|
92
|
+
s.test_files = ['spec/spec.opts'].concat(Dir['spec/*_spec.rb'])
|
93
|
+
|
94
|
+
s.has_rdoc = true
|
95
|
+
s.extra_rdoc_files = %w{README LICENSE CHANGELOG}
|
96
|
+
s.rdoc_options << '--title' << 'ActsAsCallbackLogger Documentation' <<
|
97
|
+
'--main' << 'README' << '-q'
|
98
|
+
end
|
99
|
+
|
100
|
+
Rake::GemPackageTask.new(gem_spec_file) do |pkg|
|
101
|
+
pkg.need_zip = true
|
102
|
+
pkg.need_tar = false
|
103
|
+
end
|
104
|
+
##############################################
|
105
|
+
|
106
|
+
|
107
|
+
##############################################
|
108
|
+
# Used to build RDocs
|
109
|
+
##############################################
|
110
|
+
desc 'Generate documentation for the acts_as_callback_logger plugin.'
|
111
|
+
Rake::RDocTask.new do |rdoc|
|
112
|
+
rdoc.rdoc_dir = 'doc/html'
|
113
|
+
rdoc.title = 'ActsAsCallbackLogger'
|
114
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
115
|
+
rdoc.main = 'README'
|
116
|
+
rdoc.rdoc_files.include('README',
|
117
|
+
'CHANGELOG',
|
118
|
+
'LICENSE',
|
119
|
+
'lib/')
|
120
|
+
end
|
121
|
+
##############################################
|
122
|
+
|
123
|
+
|
124
|
+
##############################################
|
125
|
+
# Uses rcov to check spec coverage
|
126
|
+
##############################################
|
127
|
+
#desc 'Run spec tests with rcov'
|
128
|
+
#task :spec_tests do
|
129
|
+
Spec::Rake::SpecTask.new do |t|
|
130
|
+
t.spec_files = FileList['spec/*_spec.rb']
|
131
|
+
t.spec_opts = ['--options', 'spec/spec.opts']
|
132
|
+
# unless ENV['NO_RCOV']
|
133
|
+
# t.rcov = true
|
134
|
+
# t.rcov_dir = 'coverage'
|
135
|
+
# t.rcov_opts = ['--text-report', '--exclude']
|
136
|
+
# end
|
137
|
+
end
|
138
|
+
#end
|
139
|
+
##############################################
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gbdev-acts_as_callback_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wes Hays
|
@@ -10,38 +10,59 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date:
|
13
|
+
date: 2009-01-11 00:00:00 -08:00
|
14
14
|
default_executable:
|
15
|
-
dependencies:
|
16
|
-
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: rcov
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.8.1
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: diff-lcs
|
27
|
+
version_requirement:
|
28
|
+
version_requirements: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 1.1.2
|
33
|
+
version:
|
17
34
|
description: Rails gem/plugin to log callback events (after_create, after_update, after_destroy) for certain models tracking various things that users did within the application. SEE README FOR MORE INFO.
|
18
35
|
email: gems@gbdev.com
|
19
36
|
executables: []
|
20
37
|
|
21
38
|
extensions: []
|
22
39
|
|
23
|
-
extra_rdoc_files:
|
24
|
-
|
25
|
-
|
40
|
+
extra_rdoc_files:
|
41
|
+
- README
|
42
|
+
- LICENSE
|
26
43
|
- CHANGELOG
|
27
|
-
|
44
|
+
files:
|
28
45
|
- install.rb
|
46
|
+
- uninstall.rb
|
47
|
+
- init.rb
|
48
|
+
- CHANGELOG
|
29
49
|
- LICENSE
|
30
|
-
- Rakefile
|
31
50
|
- README
|
32
|
-
-
|
33
|
-
- lib/acts_as_callback_logger.rb
|
34
|
-
- lib/callback_logger.rb
|
35
|
-
- lib/logger_link_to.rb
|
36
|
-
- spec/acts_as_callback_logger_spec.rb
|
37
|
-
- spec/logger_link_to_spec.rb
|
38
|
-
- spec/spec_helper.rb
|
51
|
+
- Rakefile
|
39
52
|
- tasks/acts_as_callback_logger_tasks.rake
|
40
|
-
|
53
|
+
- lib/callback_logger.rb
|
54
|
+
- lib/callback_logger/acts_as_callback_logger.rb
|
55
|
+
- lib/callback_logger/callback_logger.rb
|
56
|
+
- lib/callback_logger/logger_link_to.rb
|
57
|
+
has_rdoc: true
|
41
58
|
homepage: http://github.com/gbdev/acts_as_callback_logger
|
42
59
|
post_install_message:
|
43
|
-
rdoc_options:
|
44
|
-
|
60
|
+
rdoc_options:
|
61
|
+
- --title
|
62
|
+
- ActsAsCallbackLogger Documentation
|
63
|
+
- --main
|
64
|
+
- README
|
65
|
+
- -q
|
45
66
|
require_paths:
|
46
67
|
- lib
|
47
68
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -58,11 +79,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
79
|
version:
|
59
80
|
requirements: []
|
60
81
|
|
61
|
-
rubyforge_project:
|
82
|
+
rubyforge_project: Project on www.github.com
|
62
83
|
rubygems_version: 1.2.0
|
63
84
|
signing_key:
|
64
85
|
specification_version: 2
|
65
86
|
summary: Rails gem/plugin to log callback events (after_create, after_update, after_destroy) for certain models tracking various things that users did within the application.
|
66
87
|
test_files:
|
88
|
+
- spec/spec.opts
|
67
89
|
- spec/acts_as_callback_logger_spec.rb
|
90
|
+
- spec/logger_link_to_spec.rb
|
68
91
|
- spec/spec_helper.rb
|