pg_audit_log 0.5.2 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -47,6 +47,10 @@ class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
47
47
  true
48
48
  end
49
49
 
50
+ def set_user_id(user_id = nil)
51
+ execute_without_pg_audit_log PgAuditLog::Function::user_identifier_temporary_function(user_id || @last_user_id)
52
+ end
53
+
50
54
  def blank_audit_user_id_and_name
51
55
  @last_user_id = @last_unique_name = nil
52
56
  true
@@ -1,5 +1,7 @@
1
1
  module PgAuditLog
2
2
  class Function < PgAuditLog::ActiveRecord
3
+ DISABLED_USER = -2396
4
+
3
5
  class << self
4
6
  def name
5
7
  "audit_changes"
@@ -45,6 +47,11 @@ module PgAuditLog
45
47
  unique_name varchar;
46
48
  column_name varchar;
47
49
  BEGIN
50
+ user_identifier := pg_temp.pg_audit_log_user_identifier();
51
+ IF user_identifier = #{DISABLED_USER} THEN
52
+ RETURN NULL;
53
+ END IF;
54
+ unique_name := pg_temp.pg_audit_log_user_unique_name();
48
55
  primary_key_column := NULL;
49
56
  EXECUTE 'SELECT pg_attribute.attname
50
57
  FROM pg_index, pg_class, pg_attribute
@@ -54,8 +61,6 @@ module PgAuditLog
54
61
  AND pg_attribute.attnum = any(pg_index.indkey)
55
62
  AND indisprimary'
56
63
  INTO primary_key_column USING TG_RELNAME;
57
- user_identifier := pg_temp.pg_audit_log_user_identifier();
58
- unique_name := pg_temp.pg_audit_log_user_unique_name();
59
64
  primary_key_value := NULL;
60
65
 
61
66
  FOR col IN SELECT * FROM information_schema.columns WHERE table_name = TG_RELNAME LOOP
@@ -49,15 +49,11 @@ module PgAuditLog
49
49
  end
50
50
 
51
51
  def enable
52
- tables_with_triggers.each do |table|
53
- enable_for_table(table)
54
- end
52
+ connection.set_user_id(nil)
55
53
  end
56
54
 
57
55
  def disable
58
- tables_with_triggers.each do |table|
59
- disable_for_table(table)
60
- end
56
+ connection.set_user_id(PgAuditLog::Function::DISABLED_USER)
61
57
  end
62
58
 
63
59
  def without_triggers
@@ -1,3 +1,3 @@
1
1
  module PgAuditLog
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.4"
3
3
  end
data/pg_audit_log.gemspec CHANGED
@@ -11,6 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.homepage = "https://github.com/Casecommons/pg_audit_log"
12
12
  s.summary = %q{postgresql only database-level audit logging of all databases changes}
13
13
  s.description = %q{A completely transparent audit logging component for your application using a stored procedure and triggers. Comes with specs for your project and a rake task to generate the reverse SQL to undo changes logged}
14
+ s.post_install_message = %q{Please run PgAuditLog::Function.install (in console/migration) to install the new versions of the database functions}
14
15
 
15
16
  s.files = `git ls-files`.split("\n")
16
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -110,6 +110,8 @@ describe PgAuditLog::Triggers do
110
110
  end
111
111
 
112
112
  it "should not fire the audit" do
113
+ PgAuditLog::Function.install
114
+
113
115
  PgAuditLog::Triggers.disable
114
116
  expect {
115
117
  TableWithTriggers.create!
@@ -117,6 +119,21 @@ describe PgAuditLog::Triggers do
117
119
  end
118
120
  end
119
121
 
122
+ describe ".without_triggers" do
123
+ it "should record the user correctly afterwards" do
124
+ PgAuditLog::Triggers.without_triggers do
125
+ expect {
126
+ TableWithTriggers.create!
127
+ }.to_not change(PgAuditLog::Entry, :count)
128
+ end
129
+
130
+ expect {
131
+ TableWithTriggers.create!
132
+ }.to change(PgAuditLog::Entry, :count)
133
+ PgAuditLog::Entry.last.user_id.should == -1
134
+ end
135
+ end
136
+
120
137
  describe ".create_for_table" do
121
138
  context "for a table that already has a trigger" do
122
139
  it "should not blow up" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_audit_log
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-05-03 00:00:00.000000000 Z
12
+ date: 2012-05-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -130,7 +130,8 @@ files:
130
130
  - spec/triggers_spec.rb
131
131
  homepage: https://github.com/Casecommons/pg_audit_log
132
132
  licenses: []
133
- post_install_message:
133
+ post_install_message: Please run PgAuditLog::Function.install (in console/migration)
134
+ to install the new versions of the database functions
134
135
  rdoc_options: []
135
136
  require_paths:
136
137
  - lib
@@ -142,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
142
143
  version: '0'
143
144
  segments:
144
145
  - 0
145
- hash: -957079026031119137
146
+ hash: 3807464180291971898
146
147
  required_rubygems_version: !ruby/object:Gem::Requirement
147
148
  none: false
148
149
  requirements:
@@ -151,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
152
  version: '0'
152
153
  segments:
153
154
  - 0
154
- hash: -957079026031119137
155
+ hash: 3807464180291971898
155
156
  requirements: []
156
157
  rubyforge_project:
157
158
  rubygems_version: 1.8.19